0

毎日の監査トランザクション用の PHP コードはほとんどありません。

$result = mssql_query("BEGIN TRAN");    
$result = mssql_query("insert into items_history (select * from items)");   //move transaction to history
$result = mssql_query("delete * from items)");                                  //clear transaction table for new month transaction
$result = mssql_query(                                                          //get the data for used in another script 
            "select items_history.item_id,
                items_history.item_name,
                group_items.group_name 
            from 
                items_history,group_items 
            where group_items.id=items_history.id and 
                day(items_history.date_trans)=day(items_history.date_trans)-1 "                     // whit where include 
            );
$result = mssql_query("update trans_control set current_day=current_day+1"  };  //update the system date to next day

if (!$result) {
     mssql_query("ROLLBACK TRAN");
    } else {
     mssql_query("COMMIT TRAN");
    }
mssql_close();

何らかの理由で、このデータベースは mysql データベースでオンラインに保存する必要があります。オフラインでは、このコードの安全性についてあまり心配していません。しかし、オンラインでは、セキュリティについて考えさせられます。そして今、このスクリプトを PDO MySql に変換したいと思います。目標はより安全でシンプルです。

$result = q("BEGIN");   
$result = q("qry1");
$result = q("qry2");
$result = q("qry3");// select with many join table and some parameter data in where like 'string','int', 'date', and maybe with "Union All" in select
$result = q("qry..."};

if (!$result) {
     q("ROLLBACK");
    } else {
     q("COMMIT");
    }

別の質問にこのような問題がある場合。その特別に単純なラッパーから始めてよかったので、それがどのように機能するかを学ぶことができます. 前にありがとう。

4

1 に答える 1

0

バインドされたパラメーターを使用する限り、セキュリティは問題ありません。www.php.net/manual/en/pdostatement.bindparam.php およびhttp://www.php.net/manual/en/pdostatement.bindvalue.phpを参照してください

また、トランザクションについては、次のメソッドを使用して同じことをエミュレートできます。

BEGIN TRAN クエリの 代わりにhttp://www.php.net/manual/en/pdo.begintransaction.php、COMMITの代わりに http://www.php.net/manual/en/pdo.commit.php、http ROLLBACK の代わりに://www.php.net/manual/en/pdo.rollback.php

しかし、クエリが最初のコード サンプルのクエリとまったく同じである場合、セキュリティ上の問題を引き起こす可能性のある外部パラメーターは表示されません。

于 2012-07-31T15:02:48.277 に答える