在PHP中显示查询错误消息作为警报?

时间:2013-07-02 07:31:03

标签: php mysql

我有一个查询,它的工作正常:

$sql=mysql_query("UPDATE customers SET  password='$id' WHERE c_number='$users1' ");
$result = mysql_query($sql);
if (mysql_error()) die('Error, You have not used our services before, so no details for you to visit and explore');

我想要的是以某种警报或一些好的显示形式显示此错误消息..任何想法?

4 个答案:

答案 0 :(得分:2)

试试这个

if (mysql_error()) {
    echo "<script type='text/javascript'>
       alert('Error, You have not used our services before, so no details for you to visit and explore');
    </script>";
}

即使您可以编写脚本而不回显它(不确定但最大限度地工作)并尝试避免使用mysql_*函数,因为它们已被删除。相反使用mysqli_*函数或PDO陈述

答案 1 :(得分:0)

您只需在die中添加一些HTML和/或JS:

if (mysql_error()) 
    die('<script type="text/javascript">
             alert("Error, You have not used our services before, so no details for you to visit and explore
         </script>' );

dieexit

的PHP DOC

答案 2 :(得分:0)

从技术上讲,该查询永远不会返回错误,除非:

  1. 表或列不存在,
  2. 声明中有一个解析错误。
  3. 在这两种情况下,您要显示的错误消息都不适用;您将需要测试受影响的行数。

    也就是说,使用服务器端代码创建警报实际上是不可能的;但你可以创建一个AJAX端点:

    if (errors) {
        $response = array('error' => 'Error message here');
    } else {
        // update this if you want to pass data back to caller
        $response = array();
    }
    header('Content-Type: application/json');
    echo json_encode($response);
    exit;
    

    在客户端,您将使用AJAX提交表单,如下所示:

    $.ajax({
        url: '/path/to/endpoint',
        data: { whatever },
        success: function(response) {
            if (response.error) {
                alert(response.error);
                return;
            }
            // yay, it worked
        }
    });
    

    或者,也许为了服务于旧版浏览器,您可以生成(风格化的)HTML响应。我个人不喜欢页面刷新,然后是alert()对话窗口。

答案 3 :(得分:0)

很抱歉,但你的代码是完全错误的(你正在做两次mysql_query)。 我想你的意思是

$sql="UPDATE customers SET  password='$id' WHERE c_number='$users1' ";
$result = mysql_query($sql);
if (mysql_error()) die('Error, You have not used our services before, so no details for you to visit and explore');

引用PHP手册:*自PHP 5.5.0起,该扩展已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关常见问题解答以获取更多信息*

但无论如何,让我们做这项工作(并且更加安全):

$sql="UPDATE customers SET  password='".myqsl_escape_string($id)."' WHERE c_number='".mysql_escape_string($users1)."' ";

这可以通过转义$ id和$ users1中的每个可能的特殊字符来防止SQL注入(我怀疑其中至少有一个是用户提交的数据)。

$result = mysql_query($sql);
if ($result===false) die('Error, You have not used our services before, so no details for you to visit and explore');

这里的关键是使用mysql_query的结果,如果查询失败则为FALSE。最好在这里使用'==='比较器,因为我们不想查找0或空字符串,而只查找布尔值false。 有关详细信息,请参阅PHP mysql_query manual page