1

こんにちは、mysql UPDATE クエリで 2 つの配列を使用したいと考えています。だからここに私が持っているものがあります:

例えば:

$ergebnis:
Array ( [0] => 100 [1] => 200 [2] => 15 )


$Index:
Array ( [0] => 3 [1] => 8 [2] => 11 )

そして、これは私が試したものです:

UPDATE `lm_Artikel` 
SET Bestand='".$ergebnis."' 
WHERE `Index` = '".$Index."'

このクエリは機能していないようです。PHP エラー報告を有効にした理由がわかりませんが、エラーはなく、クエリを実行してもデータベースは何も変更されません。誰かが私が間違ったことを見ることができますか?

4

5 に答える 5

3

仲間、

データベース フィールドは int 値のように見えるので、次のように値ごとに試してみてください。

foreach( $Index as $key => $i ) :

    $query = "UPDATE lm_Artikel SET Bestand=".$ergebnis[$key]." WHERE Index = " . $i;
    mysqli_query($query);

endforeach;

それを試してみてください。

于 2012-11-28T13:22:10.527 に答える
2
  1. SQL インジェクションの影響を受けやすい
  2. クエリで配列を使用することはできません。クエリは文字列ですが、配列はそうではありません。

ループを使用するか、CASEステートメントを使用する必要があります。

UPDATE `lm_Artikel`
SET `Bestandteil` = CASE `Index`
  WHEN <insert id> THEN <insert value>
  WHEN <insert other id> THEN <insert other value>
  <etc>
END
于 2012-11-28T13:19:47.650 に答える
1
$data_db = array( '3' => 100,
          '8' => 200,
          '11' => 15);


foreach($data_db as $key=>$value) {
    $q = 'UPDATE lm_Artikel SET Bestand=' . $value . ' WHERE `Index` = ' . $key;
    mysqli_query($sql);
}
于 2012-11-28T13:19:28.297 に答える
0

これらが値のペア、つまり$ergebnis[0]is for$Index[0]などであると仮定します。

foreach ($ergebnis as $key => $value) {
    $sql = 'UPDATE lm_Artikel SET Bestand=' . (int)$value . ' WHERE `Index` = ' . (int)$Index[$key];
    // execute query...
}

いくつかのメモ:

  • あなたはSQL インジェクションに対して無防備です。(int)クイックパッチとして使用しました。
  • Prepared Statementsを調べることをお勧めします。
  • カラムに SQL キーワードを付けることは避けてくださいIndex
于 2012-11-28T13:19:15.533 に答える