0

以下のコード (option='title') のように where 条件を文字列に設定すると実行に失敗する単純な mysqli クエリがありますが、代わりに整数 (id=1) を使用すると動作します!

コードは次のとおりです。

$db_name = "gp";
$db_username = "root";
$db_pass = "";
$db_host = "localhost";
$mysqli = new mysqli($db_host, $db_username, $db_pass, $db_name);
mysqli_report(MYSQLI_REPORT_ERROR);

if($sql_title = $mysqli->query("SELECT value FROM options WHERE option='title' LIMIT 1")){
    if($sql_title->num_rows > 0){
        $row_title = $sql_title->fetch_object();
        $title = $row_title->value;
        echo $title;
    }
    else
        echo "No Title!";
}
else
    echo $mysqli->error;

$mysqli->close();

私のデータベース構造

--------------------------
| id | option |  value   |
--------------------------
| 1  | title  | hello    |
| 2  | image  | logo.jpg |

エラー SCREAM: エラー抑制は無視されました ( ! ) 警告: mysqli::query(): (42000/1064): SQL 構文にエラーがあります。C:\wamp\www\test.php の 9 行目の 1 行目の 'option='title' LIMIT 1' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

0

optionMySQL のキーワードです。列識別子として使用する場合は、常にバッククォートで囲むようにしてください。

SELECT value FROM options WHERE `option`='title' LIMIT 1
于 2013-05-06T19:32:10.757 に答える
0

optionは mysql の予約語です。バッククォートで入力する必要があります。

if($sql_title = $mysqli->query("SELECT value FROM options WHERE `option`='title' LIMIT 1")){
于 2013-05-06T19:32:30.440 に答える