データをクリーンアップして変換しています(その部分は完了しています)、それをMySQLテーブルに挿入する必要があります。これまでPerlでこの種のことを行っていたのですが、処理の一環として、データを連想配列として構造化することが鍵となります。その方法では、単にキーをループし、名前付きプレースホルダと一致する値の両方のリストを生成するだけで、準備済みの文を作成するのは簡単です。PHP連想配列をPDOプリペアドステートメントにマッピングする
しかし、私はこの作業をPHP/PDOで行うことはできません。テストコード:
$x = <<<EOD
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
EOD;
$fields = array('name', 'job', 'wallet_size', 'inseam', 'pet_name');
foreach(explode("\n", $x) as $line){
$data = array_combine($fields, explode(' ', $line));
# print_r($data);
$stmt = $dbh->prepare('INSERT INTO foobar VALUES('.':'.implode(', :', $fields));
foreach($fields as $field){
$stmt->bindParam(':'.$field, $data[$field]);
}
$stmt->execute();
}
率直に言えば、無礼でハッキーで働くように感じています。
ありFatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' in tst.php:24
権利、これを行うための正しい方法のですか?誰かが私にそれについての適切なPHP風味のフレーズを紹介してくれたら、私はそれを感謝します。
INSERT INTO foobar VALUES( '。': '。' implode( '、:'、$ fields) 'を表示しようとしましたか? ( '。': '。implode('、: '、$ fields)') '' –
@E_p - よくできました!私はそれをエコーしました - 全部ではなく、 "内側"の部分 - それはOKと見えました。あなたはそうだ、それはクローズドパレンだった。 –