Php mysqli_fetch_assoc()的结果和nul查询结果

Php mysqli_fetch_assoc()的结果和nul查询结果,php,mysql,Php,Mysql,我试图用php查询一个MySql数据库表,以确定条目是否存在。如果它确实存在,我想知道它的ID,这样我就可以在另一个表中将它用作外键。如果它不存在,我想添加新条目并查询其自动递增的ID以用作外键 首先,我执行一个mysqli_查询命令,并将句柄分配给$query 如果条目不存在,则命令 $result = mysqli_fetch_assoc($query)['id']; 返回nul。但是,当我测试时,使用: if ($result = "") { //commands } if语句不会执行

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

首先,我执行一个mysqli_查询命令,并将句柄分配给$query

如果条目不存在,则命令

$result = mysqli_fetch_assoc($query)['id'];
返回nul。但是,当我测试时,使用:

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

if语句不会执行,就好像测试返回false一样。我在这里做错了什么,或者有更好的方法来实现我想要的结果吗?

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

$result = mysql_fetch_assoc($query);
if ($result['id']) { 
   ...
}
相反。另外,请注意,示例if()命令是错误的。单个
=
进行赋值,不进行平等性测试。你可能想要

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

相反。

在if查询中使用“==”而不是“=”。并且比较应为FALSE,而不是“”。绝对可以肯定的是,您可以使用严格的比较“==”

if($result === FALSE)
我不同意上面的回答,在mysql\u fetch\u assoc调用之后立即引用$result['id'];该代码不会检查mysql_fetch_assoc是否确实返回了一个数组,它将生成一个PHP通知

我会把它写成

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

如果您的查询返回false,那么它将失败。检查mysqli_error的值以了解原因。我敢打赌您的查询中有语法错误。请使用
var\u dump()