如何在PHP中找出与MySQL错误相关的列?
我可以使用php中的如何在PHP中找出与MySQL错误相关的列?,php,mysql,Php,Mysql,我可以使用php中的mysqli_error()函数获取MySQL错误,但我不想向用户显示MySQL已发送的错误。我想获取与错误相关的字段或列的名称,并告诉用户“示例”字段中的输入应该更改。我知道我可以在PHP中使用类似于strpos()的函数来检查错误表达式是否包含列的名称,但正如您所知,一些MySQL错误表达式包含表中所有列的名称,在这里我无法决定在哪个输入字段旁边显示错误? 是否有类似于例如mysqli\u error\u column()的函数来获取引发错误的列的名称?或者其他建议 $s
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部分(除了我在第一条评论中提到的内容).我没有收到任何错误,我的验证规则工作得很好,我可以轻松地将我的行插入数据库,没有任何错误,但我写了这篇文章,是为发生某些事情而写的,我还没有预测到它。我在前面几行中验证了用户输入,这段代码几乎是代码的结尾,在这里我将经过验证和修改的用户输入数据插入数据库。在这里,我尝试获取插入过程中可能出现的任何意外错误。