0

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

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

如果条目不存在,则命令

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

返回 nul。但是,当我对此进行测试时,使用:

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

if 语句不执行,好像测试返回 false。我在这里做错了什么,还是有更好的方法来完成我正在寻找的结果?

4

2 回答 2

0

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

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

反而。另外,请注意您的示例 if() 命令是错误的。一个单一=的分配,而不是一个平等的测试。你可能想要

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

反而。

于 2013-07-08T03:58:52.450 回答
0

在 if 查询中使用 '==' 而不是 '='。并且比较应该是 FALSE,而不是 ''。可以肯定的是,您可以使用严格比较 '==='

if($result === FALSE)

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

我会把它写成

$result = mysql_fetch_assoc($query);
if ($result === FALSE) { 
   // no result
}else{
    $id = $result['id'];
}
于 2013-07-08T04:04:53.610 回答