php - 如何找出 PHP 中 MySQL 错误与哪一列相关?

标签 php mysql

我可以使用 php 中的 mysqli_error() 函数获取 MySQL 错误,但我不想向用户显示 MySQL 已发送的错误。我想获取与错误相关的字段或列的名称,并告诉用户您在“示例”字段中的输入应该更改。我知道我可以在 PHP 中使用像 strpos() 这样的函数来检查错误表达式是否包含列的名称,但是正如你所知,一些 MySQL 错误表达式包含所有列的名称表中的列和这里我无法决定哪个输入字段旁边显示错误?
是否有像 mysqli_error_column() 这样的函数来获取引发错误的列的名称?或任何其他建议?

$sql = "INSERT INTO customers (password, active, email, active_code, submit_date)VALUES('$codedPass', '0', '$email', '$verificationKey', '$currDate')";
        $insertResult = mysqli_query($conn,$sql);

        if(!$insertResult) {
            $queryError = mysqli_error($conn);
            if(preg_match("/\b"."email"."\b/",$queryError)) {
                $php_input_error['email'] = $error_msg['unknown'];
            }
            else if(preg_match("/\b"."password"."\b/",$queryError)) {
                $php_input_error['pass'] = $error_msg['unknown'];
            }
            else $php_input_error['general'] = "there's an error with your inputs, please check them again.";
        }

最佳答案

我认为没有其他方法可以做到这一点。

但是我会建议您完全不同的解决方案: 在将数据发送到数据库(在 PHP 代码中)之前验证数据会很好。

在这种情况下:

  1. 您可以实现任何复杂程度的验证规则(长度、 允许的符号、数据排序、验证之间的依赖关系 字段等)。
  2. 您将了解有关错误的一切。所以你可以向用户展示更容易理解的消息。
  3. 您将减少数据库服务器的负载。

关于php - 如何找出 PHP 中 MySQL 错误与哪一列相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39140414/

相关文章:

mysql - NodeJS - 如何将 mysql 连接从主进程传递到子进程?

mysql - 无法启动 Hive 并且 Trino 中不存在目录 'hive'

php - 如何在 PHP 中将 MySQL TIMESTAMP 转换为日期时间

php - 需要有关此 SQL 查询的帮助

php - 修改(创建 PHP 扩展)Makefile 以包含 C++ 类和代码

php - 正则表达式在每个 {space} 上拆分字符串,但不包含在引号中

php - 如何使用 php 下载保存在 mysql 数据库中的 pdf 作为 MEDIUMBLOB 数据?

php - 如何在 Laravel 中使用 php artisan 创建数据库 View 的迁移?

php - 从 MySQL 返回一行

javascript - 使用 jQuery 文件上传无法上传文件