mysql查询适用于纯文本,但不适用于变量

时间:2012-12-27 16:44:17

标签: php mysql

我正在尝试打印出一些主题信息,但它并不是那么顺利。这是我的问题:

SELECT * FROM topics WHERE id='$read'

这不起作用。我回复了$read变量,它说1。那么如果我喜欢这个:

SELECT * FROM topics WHERE id='1'

完美无缺。我没有得到什么问题。 $read或其他类似内容中没有隐藏的字符。

7 个答案:

答案 0 :(得分:1)

试试这样:

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

答案 1 :(得分:0)

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

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

如果您出于某种原因使用strings,请启动

之类的查询
$id = '1';
$query = "SELECT * FROM topics1 WHERE id = '{$id}'"

答案 2 :(得分:0)

SELECT * FROM topics WHERE id=$read
如果你把我的单引号

,它会把它当作字符串

答案 3 :(得分:0)

我想知道为什么所有参与者都没有阅读明确用引号

查询的问题
SELECT * FROM topics WHERE id='1'

可以正常工作。

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

答案 4 :(得分:0)

尝试

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

还要记得在需要时转义变量。

答案 5 :(得分: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确实存在。

答案 6 :(得分:-1)

试试这个:SELECT * FROM topics WHERE id = $ read

相关问题