我有一个脚本,我想从一个表中读取并列出列 check = 1 的所有“任务”。我的脚本工作正常并将列出所有任务....直到我包括 WHERE .然后不会将任何内容读入页面。我做错了什么?
问题是 WHERE check="1"
$sql = mysql_query('SELECT tasks FROM tasks WHERE check="1"');
while($row = mysql_fetch_array($sql))
{
echo $row['tasks'];
echo "<br />";
}
表名为“tasks”,两列分别为“tasks”(varchar255)和“check”(int11)
最佳答案
眼前的问题
为什么没有显示?您很可能遇到 SQL 错误。但您不会在任何地方打印它。
用PHP显示mysql错误
//this is a bad query, this time it is intentional
$sql = mysql_query('SELECT tasks FROM tasks WHERE check="1"');
if($sql)
{
//do processing here, no error
while($row = mysql_fetch_array($sql))
{
echo $row['tasks'];
echo "<br />";
}
}
else
{
//output error, or handle it in any other way you like
echo mysql_error();
}
你的问题很可能是引号——更新:在多个层面上:
一级
- 双引号
"
在SQL语句中是不行的。字符串常量使用单引号'
,反引号`
用于包含对象名称(表、列等)
交换引号:
$sql = mysql_query("SELECT tasks FROM tasks WHERE check='1'");
转义引号:
$sql = mysql_query('SELECT tasks FROM tasks WHERE check=\'1\'');
- 您需要报价吗?这似乎是一个数值...
只有数值,没有任何类型转换:
$sql = mysql_query('SELECT tasks FROM tasks WHERE check=1');
2 级
check
关键字是 reserved in MySQL 的事实也没有帮助。您可以使用它来识别对象,但要注意:正确地用反引号括起来 (`
):
$sql = mysql_query('SELECT tasks FROM tasks WHERE `check`=1');
强烈考虑
- 一劳永逸地离开
mysql_*
。弃用!不安全!这里是龙!- 最好是通过准备好的语句正确使用 PDO
- 继续阅读 SQL injection .这在任何一天都可能是坏消息。
- 最好是通过准备好的语句正确使用 PDO
关于php - 当我使用 php 包含 WHERE 时,从 sql 中读取停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18493755/