Php mysql查询使用纯文本,但不使用变量

Php mysql查询使用纯文本,但不使用变量,php,mysql,Php,Mysql,我正试图打印一些主题信息,但进展不太顺利。这是我的疑问: SELECT * FROM topics WHERE id='$read' 这不管用。我回显了$read变量,它表示1。那么如果我真的喜欢这个: SELECT * FROM topics WHERE id='1' 它工作得很好。我不明白是什么问题。$read或其他类似内容中没有隐藏字符。ID通常是一个数字字段,应该是 $id = 1; $query = "SELECT * FROM topics1 WHERE id = {id}"

我正试图打印一些主题信息,但进展不太顺利。这是我的疑问:

SELECT * FROM topics WHERE id='$read'
这不管用。我回显了
$read
变量,它表示
1
。那么如果我真的喜欢这个:

SELECT * FROM topics WHERE id='1'

它工作得很好。我不明白是什么问题。
$read
或其他类似内容中没有隐藏字符。

ID
通常是一个数字字段,应该是

$id = 1;
$query = "SELECT * FROM topics1 WHERE id = {id}"
如果出于某种原因正在使用
字符串
,则触发如下查询

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

它把它当作字符串,如果你把我的单引号

像这样试试:

$query = "SELECT * FROM topics WHERE id='" . $read . "'"

试着这样做:从id=$read的主题中选择*我想知道为什么所有的参与者都没有读清楚带引号的问题

SELECT * FROM topics WHERE id='1'
很好用

至于问题本身,可能是打字错误。可能在其他一些代码中,没有直接连接到$read变量

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

如果需要,还请记住转义变量。

看起来您可能在查询生成方面遇到了问题,因为其他人也都指向了这个问题。正如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 />";
}
$id=1;
$query=“从`topics1`中选择*,其中`id`={$id}”;
echo“:正在尝试查询->{$Query}
”; $res=mysql\u query($query,$dblink);
如果($res)当你说它不起作用时,什么东西不起作用了?你收到错误了吗?它没有返回结果吗?错误消息是什么?不要
echo
变量进行调试,使用
var\u dump
echo“1”
将给你与
echo“1”相同的输出
并且您将不知道任何不可打印的字符,而
var\u dump
将告诉您以字节为单位的类型和大小。@Jrod它只是不显示任何内容,当我执行mysql\u num\u行时,它会显示0
$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 />";
}