0

データベースにクエリを実行して、別々のテーブルの2つの列の間で関連する結果を見つけようとしています。これを行うには、次のコードを使用しています。

$query = "SELECT * FROM $table WHERE MATCH (TITLE) AGAINST ($description) AND ARTIST=$band ORDER BY relevance DESC";
    $result = mysql_query($query);
    if (!$result) {
        die("Result False on line 47: $result <br>
            Query: $query <br>
            Error: " . mysql_error());
    }

MYSQL構文にエラーがあるというエラーメッセージが表示されることを期待するかもしれませんが、それが何であるかわかりません。ポインタはありますか?

4

2 に答える 2

2

AGAINST ($description)する必要がありますAGAINST ('$description')

ARTIST=$bandする必要がありますARTIST='$band'

クエリで処理される文字列には、その前後に一重引用符(')が必要であり、スペースを含む列名にはバッククォート( `)が必要です。

$description引用符またはスラッシュが含まれている場合は、 mysql_real_escape_string()$bandを使用してエスケープする必要があります(とにかくこれを行うことをお勧めします)

dieまた、ステートメントをクエリ行に統合することもできます。

$result = mysql_query($query) or die(
"Result False on line 47: $result <br>
            Query: $query <br>
            Error: " . mysql_error()
);
于 2012-05-06T10:59:30.053 に答える
0

一部のSQLバージョンはこの構文をサポートしていないため、構文が正しい場合でもこのエラーが発生することがあります。

他の方法を検討する前に、MySQLのバージョンがこのクエリをサポートしているかどうかを確認してください。

于 2014-01-30T12:41:50.337 に答える