0

Is it possible to show the mysql_error (if exists) with jQuery dialog?

$query="UPDATE user SET pass=(SELECT MD5('$pass')) WHERE userid='$userid'"
$result = mysql_query($query) OR die(mysql_error());

i mean something like a own function inside mysql_error()

i searched the whole internet before this question :o)

best regards

4

2 回答 2

0

简而言之:,因为 Barmar 指出jQuery Dialog运行在客户端mysql_*运行在服务器上。

如果您确实需要显示错误,请执行以下操作:

  1. 对更新函数进行AJAX调用
  2. $result = mysql_query($query) OR echo(mysql_error());
  3. 在您的AJAX返回时,只需将返回的消息附加到 JQuery 对话框的正文中

其他解决方案是将这些错误记录在数据库或文件中的某处,并且不向用户显示任何与mysql相关的错误。

提示:摆脱不推荐使用的mysql_*函数并切换到PDOMySQLi

于 2013-07-03T19:41:12.333 回答
0

是的。不过,有几点需要注意。

  1. 您必须有一种从客户端启动 MySQL 查询的方法。通常,这是通过 AJAX 完成的,由浏览器事件触发。在下面的示例中,我使用了一个按钮单击事件来触发 AJAX 例程。

  2. AJAX 例程将“调用”您的 PHP 文件并启动您的数据库查询。或者,您可以将参数传递给 PHP 端。在此示例中,我传递了用户可能已在表单字段中输入的用户名。

  3. PHP 文件的任何输出(希望它是有用的数据)都将出现在 AJAX 例程的success:函数中。您必须在该函数中处理它即在 DOM 中插入数据等),而不是其他任何地方。如您所见,我的代码采用接收到的任何内容(变量whatigot)并使用该.html()方法将其注入到<div id="err_msg">.

  4. 最后,jQUI 对话框是最简单的部分 - 只需针对该 div 运行 .dialog 方法。请注意,第 2 和第 3 引用<head>是使它工作的原因(jqueryui refs)。

这是一个使用 AJAX 方法的独立示例:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
        <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>


        <script type="text/javascript">

            $(document).ready(function() {

                $('#mybutt').click(function() {
                    var someGuy = $('#sumuser').val();
                    $.ajax({
                        type: "POST",
                        url: "your_php_file.php",
                        data: 'userName=' + someGuy,
                        success: function(whatigot) {
                            //alert('Server-side response: ' + whatigot);
                            $('#err_msg').html(whatigot);
                            $('#err_msg').dialog({
                                autoOpen:true,
                                width:500,
                                title:"Your Error Message",
                            });
                        } //END success fn
                    }); //END $.ajax
                }); //END button click event


            }); //END $(document).ready()

        </script>
    </head>
<body>

    Type a user name and then press Go:<br />
    <input type="text" id="sumuser">
    <br />
    <input type="button" id="mybutt" value="Go">

    <div id="err_msg"></div>

</body>
</html>

请注意,PHP 处理是在一个外部文件中完成的,我在上面将其引用为your_php_file.php. 这就是里面的东西。在我的系统上,它会生成一个 MySQL 错误——您可能需要调整 MySQL 查询以生成错误。

YOUR_PHP_FILE.PHP - 实际上,必须以与引用相同的大小写命名,所以真的:your_php_file.php:

//echo 'Got to the PHP side';

$phpSideUserName = $_POST['userName'];

$query="UPDATE users SET pass=(SELECT MD5('$pass')) WHERE userid='$phpSideUserName '"
$result = mysql_query($query) OR die(mysql_error());
于 2013-07-03T20:16:28.913 回答