4

私が読んだ限りでは、たとえば、クエリのテーブル名( "INSERT INTO table_name ....")の周りにバッククォートは必要ありません。さらに、私の知る限り、アンダースコアは名前に使用するのに完全に受け入れられる構文です:foo_bar。私の質問は、なぜこのクエリが失敗したのかということです。

mysql_query("INSERT INTO quick_links WHERE ...etc");

このクエリが完全に機能した場合:

mysql_query("INSERT INTO `quick_links` WHERE ...etc");

「クイック」または「リンク」は予約語ですか?私はそうは思いませんでしたが、MySQLはかなり新しいので、お詫びします。また、特定の「ストレージエンジン」(用語についてはphpMyAdminを参照)でバッククォートを使用する必要がありますか?何か違いがあれば、たまたま「InnoDB」を使っています。

回答ありがとうございます。MySQLは初めてです。このようなニュアンスを確実に理解したいと思います。

私の完全なクエリはこれでした:

mysql_query("INSERT INTO `quick_links` VALUES (
    '$user_id', '$ql_name', '$ql_url', '$ql_img'
)"); 

$ql_urlと$ql_nameは$_POSTを介して取得され、クエリで使用される前に、trimとmysql_real_escape_stringでサニタイズされました。$ ql_imgは、サムネイルがアップロードされているディレクトリを参照するURLであり、$ user_idは、ログインしている特定のユーザーを識別するためにあります。両方のクエリは、文字通り、周りのバッククォートを除いて、まったく同じでした。 table_name。

4

1 に答える 1

9

バッククォートは、 MySQLの予約語をエスケープするためにのみ使用されます。使用されるtableNamesまたはcolumnNamesにある場合、予約済みキーワードを使用しなかった場合、これらはオプションですno spaces

このページでは、スキーマで使用できる文字について説明します。

于 2012-09-30T04:58:47.480 に答える