Php mysqli_fetch_assoc()的结果和nul查询结果
我试图用php查询一个MySql数据库表,以确定条目是否存在。如果它确实存在,我想知道它的ID,这样我就可以在另一个表中将它用作外键。如果它不存在,我想添加新条目并查询其自动递增的ID以用作外键 首先,我执行一个mysqli_查询命令,并将句柄分配给$query 如果条目不存在,则命令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语句不会执行
$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()