2011-02-08 12 views
0

mysqli_multi_queryを使用して複数のテーブル行を一度に更新しようとしています。私は、この関数が常に1行を除くすべての行の更新につながることを発見しました。たとえば、私が5行のデータを更新するように指定した場合、実際には4行しか更新されません。行数を6または7などに増やした場合でも、実際に更新されるのは「n-1」行だけです(「n」は更新するように指定された数値です)。私はこのコードをcotains PHPファイルを実行した後mysqli_multi_query関数がデータベース内のすべてのテーブル行を更新しない

<?php $jag = mysqli_connect($host, $user, $pass, $db); // connects to the database 

      /* check connection */ 
      if (mysqli_connect_errno()) { 
       printf("Connect failed: %s\n", mysqli_connect_error()); 
       exit(); 
      } 


          $query2 .= "UPDATE inst_prod_stor SET age_type = '2' WHERE payer_mail = '$pmail' AND file_name = '$fname';"; 

      print_r($query2); 



      // execute the 'update' multi query 
      $result2 = mysqli_multi_query($jag, $query2) or die(mysqli_error($jag)); 

      mysqli_close($jag); ?> 

は、私も私のWebページ上のソースコードをチェックして、それは結構です。

コードの一部は以下の通りです。私はエラーを受け取りません。実際に 'print_r'関数を使用して、 'mysqli_multi_query'関数を実行する前にデータが残っていないことを確認しました。そして、実際には、データは除外されていませんでした。関数の結果は、コードを実行するたびにほぼ完璧です。唯一の不完全さは、テーブルの1つの行が決して更新されないという事実です。そしてそれは別の行であるたびに。

私は本当にこの1つの助けが必要です、それは私が現在取り組んでいるプロジェクトを仕上げる前に、2,3週間のコーディングの旅の最後の足です。ありがとう! $のQUERY2で最初のクエリがエラーを持っている場合

答えて

0

使用mysql_real_escape_stringのと$ QUERY2

$pmail = mysql_real_escape_string($pmail); 
$fname= mysql_real_escape_string($fname); 

    $query2 = "UPDATE inst_prod_stor SET age_type = '2' WHERE payer_mail = '$pmail' AND file_name = '$fname';"; 
0
$result2 = mysqli_multi_query($jag, $query2) or die(mysqli_error($jag)); 

近く.を削除するには、のみ()死んでしまいます。

do-whileループを使用して、mysqli_error()& mysqli_affected_rows()を使用して、最初のものでないクエリのSQLエラーをデバッグする方法を確立することをお勧めします。

Strict Standards: mysqli_next_result() error with mysqli_multi_query

関連する問題