2

トピック情報を印刷しようとしていますが、うまくいきません。これは私のクエリです:

SELECT * FROM topics WHERE id='$read'

これはうまくいきません。$read変数をエコーし​​ました1。それで、私がこれを好きなら:

SELECT * FROM topics WHERE id='1'

それは完全に機能します。何が問題なのかわかりません。隠しキャラ$readなどはいません。

4

7 に答える 7

1

このようにしてみてください:

$query = "SELECT * FROM topics WHERE id='" . $read . "'"
于 2012-12-27T16:46:33.430 に答える
0

ID通常は数値フィールドです。

$id = 1;
$query = "SELECT * FROM topics1 WHERE id = {id}"

strings何らかの理由で使用している場合は、次のようなクエリを起動します

$id = '1';
$query = "SELECT * FROM topics1 WHERE id = '{$id}'"
于 2012-12-27T16:44:59.967 に答える
0

試す

$query = sprintf("SELECT * FROM topics WHERE id='%s';",$read);

また、必要に応じて変数をエスケープすることを忘れないでください。

于 2012-12-27T17:12:42.433 に答える
0

なぜ参加者全員が引用符でそのクエリを明確に言う質問を読まなかったのだろうか

SELECT * FROM topics WHERE id='1'

正常に動作します。

質問自体に関しては、タイプミスの可能性があります。おそらく $read 変数に直接接続されていない他のコードで

于 2012-12-27T16:55:38.513 に答える
0
SELECT * FROM topics WHERE id=$read

i を一重引用符で囲むと、文字列と見なされます

于 2012-12-27T16:46:26.500 に答える
0

他の誰もが指摘しているように、クエリの生成に問題があるようです。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 が実際に存在することを確認できます。

于 2012-12-27T17:29:19.400 に答える
-1

これを試してください: SELECT * FROM topic WHERE id=$read

于 2012-12-27T16:47:02.010 に答える