Php 为什么NOTNULL语句在我的sql查询中不起作用?

Php 为什么NOTNULL语句在我的sql查询中不起作用?,php,mysql,Php,Mysql,我正在尝试从列approved_date不为null的数据库表中检索数据。对于数据库访问,我使用的是MySQL面向对象语句。我编写的查询已经给出了空结果,而当我在PhpMyAdmin中尝试时,相同的查询得到了正确的结果 SELECT id, user, title, description, address, publish, created_at FROM problems WHERE approved_date IS NOT NULL AND publish=1 ORDER BY id DE

我正在尝试从列approved_date不为null的数据库表中检索数据。对于数据库访问,我使用的是MySQL面向对象语句。我编写的查询已经给出了空结果,而当我在PhpMyAdmin中尝试时,相同的查询得到了正确的结果

SELECT id, user, title, description, address, publish, created_at FROM problems WHERE approved_date IS NOT NULL AND publish=1 ORDER BY id DESC
我尝试运行为准备好的语句编写的查询,与PhpMyAdmin中的原始查询相同。在那里,它工作得很好,但说到代码,它不工作

下面是我用于准备语句的代码

public function get_approved_problems()
{
$data=array();
$db=db::open();
$day=日期('d');
$month=日期('m');
$sql=“选择id、用户、标题、描述、地址、发布、创建位置”
从问题
其中批准日期不为空且发布=1
按id描述订购”;
$query=$db->stmt_init();
如果($query=$db->prepare($sql))
{
//$query->bind_参数('ii',$month,$day);
$query->execute();
$query->store_result();
$query->bind_result($id、$user、$title、$description、$address、$publish、$created);
$numrows=$query->num\u行;
如果($numrows>0)
{
而($query->fetch())
{
$data[]=数组(
“id”=>$id,
“用户”=>$user,
“title”=>$title,
“description”=>$description,
“地址”=>$地址,
“发布”=>$publish,
“created_at”=>$created
);
}
}
$query->close();
}
返回$data;
}
上面的代码返回空结果。而下面的原始查询在PhpMyAdmin上运行良好

SELECT id, user, title, description, address, publish, created_at FROM problems WHERE approved_date IS NOT NULL AND publish=1 ORDER BY id DESC

代码没有显示任何错误消息,即使它没有按我预期的那样工作。

试试这个:

SELECT id, user, title, description, address, publish, created_at 
            FROM problems 
            WHERE publish=1 AND approved_date IS NOT NULL 
            ORDER BY id DESC

问题很可能出在PHP代码上。顺便说一句,您甚至不需要在这里使用预先准备好的语句,因为SQL查询似乎是固定的。@TimBiegeleisen看起来这可能是对实际应用程序的简化,请注意对
bind\u param()
的注释掉调用。确保启用mysqli错误报告:这里有几件事。。。1) 如果稍后调用
prepare()
并覆盖
$query
,则
stmt\u init()
是多余的。2) 您可能不需要
store\u result()
。3) 为什么还要费心处理
num_rows
?已经完成了
$query=$db->stmt_init()
这一行
if($query=$db->prepare($sql))
应该是
if($query->prepare($sql))
所以您只是更改了条件的顺序。交换定律说你没有以任何有意义的方式改变表达式。