如何停止SQL查询中的未定义索引错误?

时间:2019-03-03 19:43:02

标签: php mysqli indexing undefined

我确实已经在寻找答案,却没有找到具体的解决方案...

我最近将站点移到了其他服务器,并且必须将PHP.ini设置为记录以前未记录的错误。意识到我可以抑制此错误,但宁愿消除其原因。

数据库查询:

$SQL = "SELECT * FROM table WHERE id > 0";
$retid = $conn->query($SQL) or die($mysqli->error.__LINE__);
while($row = $retid->fetch_assoc()) {
$var1 = $row["var1"]);
$var2 = $row["var2"]);}

以及error_log文件中的错误:

  

“未定义索引:/home/domain/public_html/directory/file.php中的var2   在第129行上,而第129行为:

$var2 = $row["var2"]);}

我已经阅读并且知道,此错误可能是由未定义的$ _GET,$ _ POST或$ _SESSION变量引起的,但是如果每次SQL查询返回空值都抛出该错误,是否有一种简单的方法为了避免产生这些错误,请记住我在每个查询中都检索了很多值,因此不必每次都重复isset()参数?

谢谢

2 个答案:

答案 0 :(得分:1)

我知道您说过您不想使用isset(),但我认为这可能是必需的,因为您似乎正在尝试访问不存在的数组元素。

while($row = $retid->fetch_assoc()) {
   $var1 = isset($row["var1"]) ? $row["var1"] : "";
   $var2 = isset($row["var2"]) ? $row["var2"] : "";
}

我还注意到,在两个方括号之后,您似乎有一个额外的右括号。

答案 1 :(得分:0)

这样做

$ var2 = $ row ['var2'];

确保var2是数据库表中列的正确名称 而且我不知道为什么在数组末尾加上括号