-2

PHP で、SQL ステートメントと共に配列値を渡す SQL クエリを実行したいと考えています。私はこれを行うことができません。

以下をご検討ください

$db = "mydatabase.sqlite";
$array = array(
              "key1" => "value1",
              "key2" => "value2",
              "key3" => "value3"
         );

try {

    $dbhandle = new PDO("sqlite:$db");
    $dbhandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    foreach ($array as $item) {

      $timestamp = 
      $dbhandle->exec(
              "INSERT OR REPLACE INTO table (field1, field2, field3) 
                   VALUES ('$item['key1']', '$item['key2']', '$item['key3']')"
              );
      $dbhandle = NULL;

    } 

  } 

catch(PDOException $e) {
    print "Exception : ".$e->getMessage()."\n";
  }

SQL文をどのように表現するか?

4

1 に答える 1

1

配列要素を文字列に補間するときは、キーを引用符で囲まないでください。

          "INSERT OR REPLACE INTO table (field1, field2, field3) 
               VALUES ('$item[key1]', '$item[key2]', '$item[key3]')"

または、中括弧を使用して「複雑な」構文を使用します。

          "INSERT OR REPLACE INTO table (field1, field2, field3) 
               VALUES ('{$item['key1']}', '{$item['key2']}', '{$item['key3']}')"

ただし、準備済みステートメントを使用する方がよいでしょう。

$stmt = $dbhandle->prepare("INSERT OR REPLACE INTO table (field1, field2, field3)
                            VALUES (:key1, :key2, :key3)");
$stmt->execute($item);
于 2013-10-25T08:00:48.570 に答える