1

PHPに次のようなコード行があります...

mysql_query("INSERT INTO `updates` (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());

ただし、次のSQL構文エラーが発生します...

SQL構文にエラーがあります。1行目の'update)VALUES(' 14'、' 2012-05-06'、' Test update')'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

誰かがこれを手伝ってくれるなら、それは素晴らしいことです、おそらくそれは明らかですが、私はここで何が悪いのかわかりません!

4

4 に答える 4

1

クエリを次のように変更します。

mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error());

これは、dateとupdateがMySQLに登録されているキーワードであるためです。クエリで直接使用することはできません。私たちはそれを逃れる必要があります。

于 2012-05-06T23:14:51.080 に答える
0

dateおよびupdateはMySQLで予約語です。

次を使用できます。

"INSERT INTO `updates` (project_id, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"

理想的には、予約語をエンティティ名として使用しないでください。利点はありませんが、いくつかの小さな欠点があります(たとえば、SQLの移植性が低下します)。

また、project_idが整数型のフィールドである場合は、かなりマイナーな点として、文字列ではなく整数を渡します。好き:

 INSERT INTO `updates` (project_id, `date`, `update`) VALUES ({$project}, '{$date}', '{$update}')
于 2012-05-06T23:14:34.977 に答える
0

updateSQLのキーワードであり、mysqlフィールドをバッククォートにカプセル化します。

于 2012-05-06T23:15:18.583 に答える
0

何よりもまず、mysql保存ワードを使用することはできません。それを使用するときは、エラーを見つけるために時間を無駄にする準備をしてください。予約語のリストは次のとおりです。その中で使用しないでください http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

2番目:保存されたキーワードをあえて使用したい場合でも。ユーザーテーブルプレフィックスまたは列プレフィックスと予約済みキーワード。

3番目:phpに沿ってデータベース操作を実行するときはいつでも、必要に応じてすべてのパラメーターを引用するか、ユーザーが単純なパラメーターを引用してください。つまり、各列を引用符で囲むよりも、dbテーブルの列を引用符で囲む場合

"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')"

引用しない場合は、どれも引用しないでください

"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')"

これがお役に立てば幸いです

于 2012-05-07T10:48:33.713 に答える