4

PDO を使用してクエリを挿入しようとして数時間を費やしましたが、最終的にはできないことに気付きました (方法がわからない)。問題は、実際には列名に「?」が含まれていることです。初期化。列の 1 つは、「HSM Visa の場合は何年ですか?」という名前です。そのため、挿入するたびに、次のいずれかが得られます。-渡されたパラメーターの数が間違っているか、名前と? クエリで。

私はこれをあきらめて、作業する必要のある mysql テーブルを変更するつもりです (とにかく疑問符で列に名前を付けているのは誰ですか?) が、私はまだ興味があります。

INSERT INTO `tbl_maindetails` (`Id`,`Title`,`If HSM Visa to what year?`) VALUES (?, ?, ?)

ありがとう、ゴラン

4

3 に答える 3

1
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);

問題を解決します、私は信じています。

于 2013-01-21T16:39:10.077 に答える
0

これが私が思いつくことができる唯一の(醜い)解決策です:

$db->query("SET @column_name = 'question?'");
$db->query("SET @sql_text = CONCAT('INSERT INTO table1 SET `', @column_name, '` = ?')");
$db->query("PREPARE stmt FROM @sql_text;");
$db->query("SET @v = ?", 'something');
$db->query("EXECUTE stmt USING @v");
echo $db->insert_id();

これにより、新しい行が table1 に質問とともに挿入されますか? =「何か」

このコードは PDO ラッパーを使用しているため、それに合わせて調整する必要があります。

長期的には、列の名前を変更することで正しい選択をしたと思います。

于 2013-01-21T16:28:24.873 に答える