【问题标题】:How do I stop undefined index error from SQL query?如何从 SQL 查询中停止未定义的索引错误?
【发布时间】:2019-07-25 03:46:52
【问题描述】:

我确实已经搜索过这个问题的答案,但没有找到具体的解决方案......

我最近将一个站点移动到了不同的服务器,并且 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() 参数?

谢谢

【问题讨论】:

  • 简而言之,没有。你要么需要处理错误,要么忍受它

标签: php mysqli indexing undefined


【解决方案1】:

我知道你说过你不想使用 isset(),但我认为这可能是需要的,因为看起来你正在尝试访问一个不存在的数组元素。

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

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

【讨论】:

    【解决方案2】:

    这样做

    $var2 = $row['var2'];

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

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      相关资源
      最近更新 更多