在JavaScript警告框中显示PHP MySQLi错误信息

3

有没有可能将PHP/MySQLi的"or die"错误信息保存在变量中,并在JavaScript警告窗口中显示?

在下面的查询中我根本没有使用"or die",有没有一种方法可以在JavaScript警告中显示错误?

这是我正在使用的代码:

 <?php

   $update = "UPDATE table SET column1 = '$variable1', column2 = $variable2' WHERE UID = '$idVariable'";

   $query = mysqli_query($dbc, $update); // or die usually goes here

  if($query == false)
  {
    echo ("<script language='javascript'>
             window.alert('Error saving record.')
             window.location.href='javascript:history.back()'
           </script>");
  }
  else
  {
    echo ("<script language='javascript'>
             window.alert('Updated')
             window.location.href='main.php'
           </script>");
  } 

如您所见,我运行了一个查询,如果失败,它会显示一个JavaScript警报,指出“保存记录时出错”,但是没有说明错误是什么。可能是重复或其他错误。

我希望能够显示确切的错误。如果有其他方法,请告诉我。

我在想这样做可能会起作用:

 $query = mysqli_query($dbc, $update) or die($error = mysqli_error());

我试图在JavaScript提示窗口中显示变量$error,但它并没有起作用。

3
不行,因为在客户端运行JS时,PHP已经收拾好了午餐盒回家喝茶了。 - CD001
除非您知道$variable1和$variable2以及$idVariable永远不会包含MySQL认为是特殊字符的字符,否则最好对它们进行转义。https://xkcd.com/327/ - hanshenrik
确实。这些变量有转义字符。我所指的错误是重复的,例如。 - John Beasley
1个回答

2

不存在需要使用它的情况。

  • 如果是无法恢复的错误
    • 如果是生产服务器,只需显示 "Error"。提供系统错误消息会令人困惑且存在不安全隐患。记录错误,然后从中读取。
    • 如果是开发服务器,则不需要花哨的警报,而是直接的错误消息。只需将其输出即可。
  • 如果是可恢复错误(例如重复项)- 然后处理它。获取错误,检查它是否与已知模式列表匹配,然后显示用户友好提示以更改输入值。

再次强调:

系统错误不应对用户可见!

  • 普通用户不知道什么是重复索引。他们只会感到困惑。
  • 潜在的黑客不应该获得关于您代码内部的免费信息。

因此,用户与系统错误无关。只需表示道歉。


这是生产环境,所以当用户遇到错误时,我需要能够向他们展示错误信息。 - John Beasley
基本上,我需要手动显示错误可能是什么,然后自己找出解决方法。 - John Beasley
您向用户展示道歉,并记录错误,以便于进行故障排除。@HoodCoderMan - Jay Blanchard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接