2016-05-18 10 views
-1

私はこのコードをデータベースのテーブルを更新するために持っています。 $C1$C2などは前の計算から配列のセットです:配列のセットを使用してデータベースを更新します

$Cupdate = array($C1, $C2, $C3, $C4, $C5, $C6); 

    array_unshift($Cupdate, null); 
    $Cfinalupdate = call_user_func_array('array_map', $Cupdate); 

    if(is_array($Cfinalupdate)){ 
     $valuesArr = array(); 
     foreach($Cfinalupdate as $row){ 
      $sqlup = "UPDATE tempselect SET "; 

      $C1up = mysql_real_escape_string($row['0']); 
      $C2up = mysql_real_escape_string($row['1']); 
      $C3up = mysql_real_escape_string($row['2']); 
      $C4up = mysql_real_escape_string($row['3']); 
      $C5up = mysql_real_escape_string($row['4']); 
      $C6up = mysql_real_escape_string($row['5']); 

      $valuesArr[] = "C1 = '$C1up', C2 = '$C2up', C3 = '$C3up', C4 = '$C4up', C5 = '$C5up', C6 = '$C6up'"; 
      $sqlup .= implode(',', $valuesArr); 
      mysql_query($sqlup) or exit(mysql_error()); 
     } 
    } 

しかし、上記のコードは、私は私のデータベースはこのようになって更新したいとし、$Cfinalupdateの最後の行を置く:

C1 C2 C3 C4 C5 C6 
1 4 2 3 1 5 
6 2 4 1 2 7 
8 1 2 5 4 6 

しかし、私は私のデータベーステーブルに見ると、それは次のように判明:私はINSERTのセットにこのコードを試してみた

C1 C2 C3 C4 C5 C6 
8 1 2 5 4 6 
8 1 2 5 4 6 
8 1 2 5 4 6 

それは完璧に動作しますが、なぜそれは配列の最後の行だけを更新するのですか?ありがとうございました。

+2

おそらく無いWHERE句のと、それは私が見フレッド-II- @あなたの全体のデシベル –

+0

を更新しています、あなたはよ、それらはあなたの合計の列がある場合、私は、 – lacyeex

+0

を試すプラスます待ちます例として "id"(int)カラムを追加し、おそらくそれをAIにする必要があります。それは良くなるだろう –

答えて

0

それはフレッドが-ii-言うように...

簡単です:

WHERE節が更新されるべきレコードまたはレコードを指定します。 WHERE句を省略すると、すべてのレコードが更新されます。

さらに詳しい情報:W3Schools - SQL UPDATE Statement

+2

なぜ私の本能は常に "強打"です。 –

+0

こんにちはトーマス!私の質問にお返事いただきありがとうございます。だからフレッドが言ったように、私は自分のコードに 'WHERE'句を入れようとしますが、新しいエラーが発生しました'あなたはあなたのSQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、 'C1 =' 2.00 '、....の近くで使用する正しい構文を確認してください。また、C1、C2などでバックティックを試してみてください。 – lacyeex

+0

DBを再構築し、あなたが 'Mysql_ *'を使用していて、それが廃止され、 'Mysqli_ *'にアップグレードされているために、あなたのコードのほとんどすべてを書き直してください。 –

関連する問題