如何在PHP中找出与MySQL错误相关的列?

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

我可以使用php中的
mysqli_error()
函数获取MySQL错误,但我不想向用户显示MySQL已发送的错误。我想获取与错误相关的字段或列的名称,并告诉用户“示例”字段中的输入应该更改。我知道我可以在PHP中使用类似于
strpos()
的函数来检查错误表达式是否包含列的名称,但正如您所知,一些MySQL错误表达式包含表中所有列的名称,在这里我无法决定在哪个输入字段旁边显示错误?
是否有类似于例如
mysqli\u error\u 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.";
        }

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

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

在这种情况下:

  • 您可以实施任何复杂程度的验证规则(长度, 允许的符号、数据顺序、验证之间的依赖关系 田地等)
  • 你会知道关于错误的一切。因此,您可以向用户显示更易于理解的消息
  • 您将减少数据库服务器的负载

  • 您应该在尝试将用户输入插入数据库之前验证它。您还应该使用而不是连接SQL字符串,因为它消除了错误的风险。我在前面几行中验证了用户输入,这段代码几乎是代码的结尾,在这里我将验证和修剪的用户输入数据插入数据库。在这里,我尝试获取在插入过程中可能发生的任何意外错误。如果在验证之后,在特定列上仍然出现特定错误,那么需要更改的是您的验证,而不是DB部分(除了我在第一条评论中提到的内容).我没有收到任何错误,我的验证规则工作得很好,我可以轻松地将我的行插入数据库,没有任何错误,但我写了这篇文章,是为发生某些事情而写的,我还没有预测到它。我在前面几行中验证了用户输入,这段代码几乎是代码的结尾,在这里我将经过验证和修改的用户输入数据插入数据库。在这里,我尝试获取插入过程中可能出现的任何意外错误。