2

phpmyadminでは、SQLを介してこれを実行できます。

SELECT * FROM mytable WHERE `Bob's Stuff` > 1

しかし、まったく同じクエリを実行すると、phpスクリプトは次のようになります。

$stmt->prepare("SELECT * FROM mytable WHERE `Bob's Stuff` > :int");
$stmt->bindValue(':int', $int);
$stmt->execute();

このエラーが発生します:

致命的なエラー:キャッチされない例外'PDOException'とメッセージ'SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。script.php:208の10行目で':int AND Bob's Stuff> ='1')'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。スタックトレース:#0 script.php(208): PDOStatement-> execute()#1{main}が208行目のscript.phpにスローされます

クエリ列を他の列名に変更すると、クエリは正常に機能します。

アポストロフィを使用して列名を付けることはできますか?

4

1 に答える 1

0

その列名をパラメーターとしても作成します。

$tableName = "`Bob\'s Stuff`";
$stmt->prepare("SELECT * FROM mytable WHERE :tableName > :int");
$stmt->bindValue(':tableName', $tableName);
$stmt->bindValue(':int', $int);
$stmt->execute();

ちなみに、次回はのような列を作成しないことをお勧めしますBob's Stuff。このように一言にしてくださいBobStuff

于 2012-09-08T09:57:22.373 に答える