0
$string = 'Loreum';
$insert = "INSERT INTO table (field1, field2 ) VALUES ($string , 7)";
$conn -> query($insert)

これによりエラーが発生します。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ashfjksaf' in 'field list'' in C:\xampp\htdocs\yipee.php:23 Stack trace: #0 C:\xampp\htdocs\yipee.php(23): PDO->query('INSERT INTO yea...') #1 {main} thrown in C:\xampp\htdocs\yipee.php on line 23

しかし、私がに変更すると

$insert = "INSERT INTO table (field1, field2 ) VALUES ('$string' , 7)";

期待どおりに動作します。なぜ文字列変数に単一引用符を含める必要があるのか​​ 疑問に思います。リテラル文字列に引用符を含めるだけでよいと思いました。

4

2 に答える 2

2

これが MySQL 構文のしくみです。PHP は単にクエリを構築しているだけです。

PHP は $string を Loreum に置き換えます

したがって、MySQL クエリは次のようになります。

INSERT INTO table (field1, field2 ) VALUES (Loreum , 7)

これは無効な構文です。

したがって、引用符を追加する必要があります。

于 2013-08-11T11:55:57.683 に答える
0

すべての mysql 文字列は一重引用符で囲む必要があります

お気に入り

               insert into table_name   (name,email)values('alok','alok@gmail.com');
于 2013-08-11T13:45:53.223 に答える