0

joomlaを使用してサイトを開発していますが、奇妙なエラーが発生しています。次のコードで構文エラーが発生しました。

$q = "TRUNCATE TABLE ".$db->quote('#__csvi_available_fields');

実行時に出力を提供します。

TRUNCATE TABLE 'erx_csvi_available_fields'

しかし、mysqlはエラーを示します:

JDatabaseMySQL :: query:1064-SQL構文にエラーがあります。1行目の「#__csvi_available_fields」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。SQL= TRUNCATE TABLE'#__csvi_available_fields'

奇妙なことに、引用符なしで実行すると、正常に実行されます。

TRUNCATE TABLE erx_csvi_available_fields <-- works without problem

ここで何がうまくいかなかったのか分かりますか?

4

3 に答える 3

3

一重引用符「'」は使用しないでください。「`」(キーボードの数字の左側)を使用します。通常の一重引用符は文字列用であり、二重引用符と同じです

于 2012-10-15T15:27:18.613 に答える
3

他の人が言ったように、間違った引用符が追加されました.

JoomlaJDatabaseを使用して引用を提供する場合、1 つは値用に、もう 1 つはデータベース、テーブル、または列/フィールド名用に呼び出すことができる 2 つの異なる関数があります。

quoteName()サンプル行を機能させるには、次のように使用する必要があります。

$q = "TRUNCATE TABLE ".$db->quoteName('#__csvi_available_fields');

$db->quote()、SQL で使用されている値を引用するために使用されます。

/libraries/joomla/database/database.php抽象化がどのように機能するかについてのアイデアを読むことができます。

于 2012-10-15T22:15:02.523 に答える
2

文字列には一重引用符が使用され、名前にはバッククォートを使用する必要があります。

MySQLマニュアルから:

識別子の引用文字はバッククォート (`) です

この Stackoverflow の質問もご覧ください: Using backquote/backticks for mysql queries

于 2012-10-15T15:33:37.230 に答える