2

準備済みステートメントを使用して MySQL テーブルの内容を取得しようとしています。

$sql = $mysqli->prepare("SELECT 'number' FROM rooms
        WHERE 1 
        ORDER BY  'number' ASC 
        LIMIT ?, ? ");

    $n1 = 0;
    $n2 = 30;

    $sql->bind_param('ii', $n1, $n2);

    $sql->execute();
    $sql->bind_result($number);

    while ($sql->fetch()){

        printf($number);

    }

私が読んだほぼ3つの異なるチュートリアルマニュアルによると、このスクリプトはテーブル「部屋」の列「番号」の内容を繰り返し処理し、結果を出力する必要があります。代わりに、列自体の名前 (「数値」) を行数だけ出力します。

これは私を怒らせています!なぜそれをしているのですか?

4

2 に答える 2

3

列名にバッククォートを使用する

$sql = $mysqli->prepare("SELECT `number` FROM rooms
        WHERE 1 
        ORDER BY  `number` ASC 
        LIMIT ?, ? ");
于 2013-03-09T18:25:49.360 に答える
1

あなたの引用は間違っています。あなたは実際にあなたのクエリで「テーブルルームのすべてのエントリについて、文字列'number'を取得してください」と言いました。

フィールド名またはテーブル名を引用する場合は、代わりに斜め引用符を使用してください。

SELECT `field`, 'fixed string'
FROM   `table`
于 2013-03-09T18:26:50.493 に答える