2017-05-26 8 views
-3

PHPの配列からmysqlテーブルのすべての値に対して2列、ratedおよびimdb_ratingを更新しようとしています。 $dataは2次元配列です。配列はjavascriptから投稿されます。エラーは表示されず、私のテーブルで何も起こっていないことを除いて、すべてのことはOKです。レコードが更新されていません。 echo json_encode(0)は0を返しますが、レコードは更新されていません。私の最大の心配は、die(mysqli_error($con));はエラーを返さないということです。どこで私は間違えましたか?MySQLのテーブルをPHPでループで更新する

if($con){ 
     $data=$_POST['dat']; 
     $count=sizeof($data); 

     for($i=0;$i<$count;$i++){ 
     $sql="UPDATE `movies2` SET `rated`='$data[$i][2]' WHERE `movie_ID`='$data[$i][0]'"; 
     $sql2="UPDATE `movies2` SET `imdb_rating`='$data[$i][1]' WHERE `movie_ID`='$data[$i][0]'"; 
     $result=mysqli_query($con,$sql); 
     $result2=mysqli_query($con,$sql2); 
    } 

     if($result && $result2){ 
      echo json_encode(0); 
     } 
     else{ 
      echo json_encode(1); 
      die(mysqli_error($con)); 
     } 
    } 
+0

クエリ内の生の$ _POSTデータを含めないでください。 SQLインジェクションについて読む。あなたの質問をエコーし​​ようとしましたか?あなたは何が間違っているかを見るでしょう。 – ElChupacabra

+1

'$ sql'と' $ sql2'を 'echo'した場合、期待通りの値が正しく埋められていますか? phpMyAdminでそのクエリをコピー/ペーストすると、データベースが正しく更新されますか? – rickdenhaan

+0

はいphpMyAdminでSQL文がうまく動作します – mwaniki

答えて

0

私はこれはあなたのために働くかもしれないと思います。

If Database Like Be

あなた$_POST['dat']は、以下のようになります。

 <?php 
      $_POST['dat']= array(array('1234','imdb_rating1','rated1'),array('2345','imdb_rating2','rated2')); 

      $servername = "localhost"; 
      $username = "root"; 
      $password = ""; 
      $database = 'test'; 

     $con = mysqli_connect($servername, $username, $password, $database); 
     if($con){ 
     $data=$_POST['dat']; 
     $count=sizeof($data); 

     for($i=0;$i<$count;$i++){ 
      $data0 = $data[$i][0]; 
      $data1 = $data[$i][1]; 
      $data2 = $data[$i][2]; 
     $sql="UPDATE `movies2` SET `imdb_rating`='".$data1."', `rated`='".$data2."' WHERE `movie_ID`='".$data0."'"; 
     $result=mysqli_query($con,$sql); 
    } 

     if($result){ 
      echo json_encode(0); 
     } 
     else{ 
      echo json_encode(1); 
      die(mysqli_error($con)); 
     } 
    } 
       ?> 

Result Will Be Like

0

明らかにエラーは$data[$i][2]にありました。代わりに{$data[$i][2]}を使用して正常に動作しました。ありがとう。

0

標準的なPHPインストールに特別なライブラリはなく、ドット演算子を使用して文字列連結を実装しています。このようにコードを変更してください。

$sql="UPDATE `movies2` SET `rated`='".$data[$i][2]."' WHERE `movie_ID`='".$data[$i][0]."'"; 

$ SQL2 = "UPDATE movies2 SET imdb_rating = '"。$データ[$ i]が[1]。 " 'movie_ID ='"。$データ[$ i]が[0]。 "'" ;

関連する問題