3

私は Web 関連のコーディングの初心者で、sqlite データベースを読み書きできる Web インターフェイスを作成しようとしています。私の現在の問題は、PHP 変数 ($inNodeID) を sqlite クエリに実装することです。

SELECT * FROM data WHERE NodeID = "$inNodeID"

クエリの変数を変数の値 ( "ID007") に置き換えると、すべてが機能するようです。では、このように私の構文の何が問題なのですか?

    $inNodeID = "ID007";
    echo "Requested node: $inNodeID \n";

    print "<table border=1>";
    print "<tr><td>NodeID</td><td>MemoryIndex</td><td>DataIndex</td><td>TimeStamp</td></tr>";
    $result = $db->query('SELECT * FROM data WHERE NodeID = "$inNodeID"');
    //$result->bindParam(':inNodeID', $inNodeID, PDO::PARAM_STR);

    foreach($result as $row)
    {
    print "<td>".$row['NodeID']."</td>";
    print "<td>".$row['MemoryIndex']."</td>";
    print "<td>".$row['DataIndex']."</td>";
    print "<td>".$row['TimeStamp']."</td></tr>";
    }
    print "</table>";
4

5 に答える 5

4

あなたは正しい使い方をしようとしていたようですが、何らかの理由であきらめました

どうぞ:

$result = $db->prepare('SELECT * FROM data WHERE NodeID = ?');
$result->execute(array($inNodeID));
$data = $result->fetchAll();

foreach($data as $row)
...
于 2013-07-24T13:33:50.303 に答える
0

問題は、変数を囲んでいるためです$inNodeID。変数が引用符で囲まれている場合、PHP は使用されている引用符に基づいてさまざまな方法で動作します。PHP は、変数が二重引用符で囲まれている場合にのみ評価します。単一引用符で使用されている場合、PHP は変数を STRING として扱います。

コードを以下のオプションのいずれかに変更してください。問題は解決します

オプション1

$result = $db->query("SELECT * FROM data WHERE NodeID = $inNodeID");

オプション 2

$result = $db->query('SELECT * FROM data WHERE NodeID = '.$inNodeID);

詳細については、 PHPマニュアルをご覧ください

于 2013-07-24T16:17:39.657 に答える