来自mysqli_fetch_assoc()的结果与nul查询结果

时间:2013-07-08 03:56:36

标签: php mysql

我正在尝试查询php中的MySql数据库表以确定是否存在条目。如果它确实存在,我想知道它的ID,所以我可以将它用作另一个表中的外键。如果它不存在,我想添加新条目并查询其自动增量ID以用作外键。

首先,我执行一个mysqli_query命令并将句柄分配给$ query。

如果条目不存在,则命令

$result = mysqli_fetch_assoc($query)['id'];

返回nul。但是,当我测试它时,使用:

if ($result = "")
{
//commands
}

if语句没有执行,好像测试返回false。我在这里做错了什么,或者有更好的方法来完成我想要的结果?

2 个答案:

答案 0 :(得分:0)

除非您运行PHP 5.5,否则不能使用从函数/方法调用返回的数组并立即取消引用它。尝试使用标准的5.5之前的语法:

$result = mysql_fetch_assoc($query);
if ($result['id']) { 
   ...
}

代替。同样,请注意您的示例if()命令是错误的。单个=执行分配, NOT 执行相等性测试。你可能想要

 if ($result == "")
             ^^---note, 2 ='s

代替。

答案 1 :(得分:0)

在if查询中使用'=='而不是'='。比较应该是假的,而不是''。为了绝对确定,您可以使用严格比较'==='

if($result === FALSE)

我不同意上述答案的部分,其中$ result ['id']在mysql_fetch_assoc调用之后被立即引用;该代码不检查mysql_fetch_assoc确实返回了一个数组,它会产生一个PHP通知。

我会把它写成

$result = mysql_fetch_assoc($query);
if ($result === FALSE) { 
   // no result
}else{
    $id = $result['id'];
}