トピック情報を印刷しようとしていますが、うまくいきません。これは私のクエリです:
SELECT * FROM topics WHERE id='$read'
これはうまくいきません。$read
変数をエコーしました1
。それで、私がこれを好きなら:
SELECT * FROM topics WHERE id='1'
それは完全に機能します。何が問題なのかわかりません。隠しキャラ$read
などはいません。
このようにしてみてください:
$query = "SELECT * FROM topics WHERE id='" . $read . "'"
ID
通常は数値フィールドです。
$id = 1;
$query = "SELECT * FROM topics1 WHERE id = {id}"
strings
何らかの理由で使用している場合は、次のようなクエリを起動します
$id = '1';
$query = "SELECT * FROM topics1 WHERE id = '{$id}'"
試す
$query = sprintf("SELECT * FROM topics WHERE id='%s';",$read);
また、必要に応じて変数をエスケープすることを忘れないでください。
なぜ参加者全員が引用符でそのクエリを明確に言う質問を読まなかったのだろうか
SELECT * FROM topics WHERE id='1'
正常に動作します。
質問自体に関しては、タイプミスの可能性があります。おそらく $read 変数に直接接続されていない他のコードで
SELECT * FROM topics WHERE id=$read
i を一重引用符で囲むと、文字列と見なされます
他の誰もが指摘しているように、クエリの生成に問題があるようです。Akash が指摘したように、最初にクエリを文字列に組み込み、次にその文字列を MySQL API にフィードすることは常に良いことです。これにより、便利なデバッグ手法に簡単にアクセスできます。それでも問題が解決しない場合は、これを試してください。
$id = 1;
$query = "SELECT * FROM `topics1` WHERE `id`={$id}";
echo ": Attempting Query -> {$query}<br />";
$res = mysql_query($query, $dblink);
if($res <= 0)
die("The query failed!<br />" . mysql_error($dblink) . "<br />");
$cnt = mysql_num_rows($res);
if($cnt <= 0)
{
$query = "SELECT `id` FROM `topics1`";
echo "No records where found? Make sure this id exists...<br />{$query}<br /><br />";
$res = mysql_query($query, $dblink);
if($res <= 0)
die("The id listing query failed!<br />" . mysql_error($dblink) . "<br />");
while($row = mysql_fetch_assoc($res))
echo "ID: " . $row['id'] . "<br />";
}
これにより、少なくとも呼び出し間を監視し、クエリが実際にどのように見えるか、mysql がそれについて何を言っているかを確認し、他のすべてが失敗した場合は、探している ID が実際に存在することを確認できます。
これを試してください: SELECT * FROM topic WHERE id=$read