2016-04-07 10 views
-1

データベースの一部のテーブルを挿入して更新するために、mysqlクエリを使用してPHPスクリプトを作成する必要があります。すべてのクエリが実行されていることを確認するトランザクションを使用する必要があります。問題は、最初のクエリデータをwhileループ内の2番目のクエリの入力値として使用する必要があることです。私はサンプルスクリプトを書いていますが、動作しません。データの挿入や更新はありません。助けてください..!最初のクエリデータは、2番目のクエリでwhile whileループでトランザクションで使用されます。どうやって..?

ここにphpスクリプトがあります。

$processes = array(); 

    $select_qty = "SELECT * FROM stock_master WHERE itemid='$itemId'"; 
    $result_qty = mysql_query($select_qty); 

    while($row = mysql_fetch_assoc($result_qty)){ 

     $id = $row['id']; 
     $stokqty = $row['availableqty']; 


     $processes[] = "UPDATE stock_master SET availableqty = '$stokqty' WHERE itemid = '$id'"; 
     $processes[] = "INSERT INTO nista_bill_master (billno, billdate, icode, iname, warehouse, quantity) VALUES ('$id', 'xx', 'xx', 'xx','xx', '$stokqty')"; 

    } 

    mysql_query("SET AUTOCOMMIT=0"); 
    mysql_query("START TRANSACTION"); 

    $count_processes = count($processes); 
    for($i=0; $i < $count_processes; $i++){ 
     try { 
      $q = mysql_query($processes[$i]); 
      if (!$q) throw new Exception(mysql_error()); 
     } 
     catch (Exception $e) { 
      mysql_query("ROLLBACK"); 
      break; 
     } 
    } 
    mysql_query("COMMIT"); 
    mysql_query("SET AUTOCOMMIT=1"); 
+0

' mysql_とすべきではない:あなたは最後

$processes[] = "INSERT INTO nista_bill_master (billno, billdate, icode, iname, warehouse, quantity) VALUES ('$id', 'xx', 'xx', 'xx','xx', '$stokqty',)"; 

削除に「」を入れてきたこの文で は「」以下のような文を形成します中古。なぜPHPのmysql_ *関数を使うべきではないのですか?](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)を読んでください。それらを何に置き換えるか。 –

+0

私は既存のプログラムを編集中です。それはmysql(mysqliではなく)を使用していました。だから私は何をするのですか..? – Hirantha

+0

mysqlをmysqliに置き換えるのはかなり簡単です。 [docs](http://php.net/manual/en/book.mysqli.php)を読んでください。ほとんどの関数呼び出しには、わずかに異なるパラメータを持つ似た名前が付いています。あなたは[準備されたステートメントを使用する](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)も見てみたいと思うでしょう。 –

答えて

0

これは問題になります。 PHPの関数は廃止され `*

$processes[] = "INSERT INTO nista_bill_master (billno, billdate, icode, iname, warehouse, quantity) VALUES ('$id', 'xx', 'xx', 'xx','xx', '$stokqty')"; 
+0

いいえ、それを修正します。しかし、動作しません。 – Hirantha

+0

何がエラーですか? – vishu

+0

データが挿入されていません。コミット部分が機能していません。 – Hirantha

関連する問題