sql 未返回任何结果
sql returning no results
如果我手动将 1 的值放入 returns 预期结果,则以下代码在我使用 $dep 代码中的变量时不返回任何结果。我试过没有引号单引号和双引号。我看了很多例子,但我看不出我做错了什么
$dep = 1;
if (!$names) {
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE
. ' WHERE dept_id='$dep' ORDER BY `sort`";
$res = db_query($sql);
查询的第二行存在语法错误 - 如果您想在查询中使用 single-quotes,则需要将其全部包含在 double-quotes:
中
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ' .TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";
顺便说一下,使用字符串连接构建这样的查询是一个非常糟糕的想法,会让您面临 SQL 注入攻击 - 您应该改用准备好的语句和参数。
首先,正如 Fred -ii 所说,确保 if 语句正确执行。然后,如果 dept_id
是一个整数值,那么您不需要像 scaisEdge 所说的那样使用单引号。否则 SQL 看起来不错。确保数据库中有正在传入的 dept_id
的契约记录。
我很确定您的错误与使用错误的引号有关。
在你的代码中,你写
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE
. ' WHERE dept_id='$dep' ORDER BY `sort`";
在 FROM 之后,您使用的是 single-quotes('),但您的整个查询已包含在 double-quotes(") 中,因此会产生问题。
应该是:
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ".TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";
编辑:忘了指出你应该认真使用 PDO 或任何其他 SQL 注入预防方法。如果在任何情况下,您的 $dep 变量都可以通过 public 形式发送,那么在最好的情况下,您最终可能会转储数据库。
如果我手动将 1 的值放入 returns 预期结果,则以下代码在我使用 $dep 代码中的变量时不返回任何结果。我试过没有引号单引号和双引号。我看了很多例子,但我看不出我做错了什么
$dep = 1;
if (!$names) {
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE
. ' WHERE dept_id='$dep' ORDER BY `sort`";
$res = db_query($sql);
查询的第二行存在语法错误 - 如果您想在查询中使用 single-quotes,则需要将其全部包含在 double-quotes:
中$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ' .TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";
顺便说一下,使用字符串连接构建这样的查询是一个非常糟糕的想法,会让您面临 SQL 注入攻击 - 您应该改用准备好的语句和参数。
首先,正如 Fred -ii 所说,确保 if 语句正确执行。然后,如果 dept_id
是一个整数值,那么您不需要像 scaisEdge 所说的那样使用单引号。否则 SQL 看起来不错。确保数据库中有正在传入的 dept_id
的契约记录。
我很确定您的错误与使用错误的引号有关。 在你的代码中,你写
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE
. ' WHERE dept_id='$dep' ORDER BY `sort`";
在 FROM 之后,您使用的是 single-quotes('),但您的整个查询已包含在 double-quotes(") 中,因此会产生问题。
应该是:
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ".TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";
编辑:忘了指出你应该认真使用 PDO 或任何其他 SQL 注入预防方法。如果在任何情况下,您的 $dep 变量都可以通过 public 形式发送,那么在最好的情况下,您最终可能会转储数据库。