我可以使用 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 代码中)之前验证数据会很好。
在这种情况下:
- 您可以实现任何复杂程度的验证规则(长度、 允许的符号、数据排序、验证之间的依赖关系 字段等)。
- 您将了解有关错误的一切。所以你可以向用户展示更容易理解的消息。
- 您将减少数据库服务器的负载。
关于php - 如何找出 PHP 中 MySQL 错误与哪一列相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39140414/