这里是新人,编程真的很新手,所以放轻松......
我发现我的 INSERT
由于重复记录错误而失败。我通过在 MySQL 控制台中使用文字运行查询来解决这个问题,其中弹出了 err#1062。
我想了解的是为什么 mysql_error()
或 mysql_errno()
在我的 PHP 脚本中没有捕获此错误。
下面是我所做的一般设置。我有一个表单提交到一个调用 data_insert()
function data_insert($var1, $var2, $var3, $var4){
$db = db_connect();
$query = "INSERT INTO exampletable (id, id_2, id_3, id_4)
VALUES ('$var1', '$var2', '$var3', '$var4')";
$result = $db->query($query);
if (!$result)
{
echo ('Database Error:' . mysql_error());
}
else
{
echo "Data added to db";
}
}
数据库连接:
function db_connect()
{
$result = new MySQLi('localhost', 'root', 'root', 'dbname');
if (!$result)
throw new Exception('Could not connect to database server');
else
return $result;
}
我得到的结果是:
Database Error:
PHP 会回显“数据库错误:”,因为 INSERT
失败,但不会回显后续的 MySQL 错误信息。老实说,我不太确定我应该看到什么,但是通过阅读其他一些问题,我已经仔细检查了 php.ini 文件的错误处理,并且 E_ALL 和 display_errors 已正确设置(尽管不确定是否在这种情况下很重要)。
我的逻辑中是否有一些我不理解的地方,例如链接资源 mysql_error() 所占用的范围?
感谢您的帮助,我希望这是一件非常明显的事情。
我知道上面缺少 XSS 和安全预防措施以及统一的异常处理。不过婴儿学步。为了方便讨论,这里对其进行了简化。
最佳答案
您正在使用 mysqli(注意 i)进行数据库操作,但正在调用 mysql_error(没有 i)。它们是两个完全不同的接口(interface),并且根本不共享内部状态。其中一个的数据库句柄/结果在另一个中不可用。
尝试使用mysqli_error()
(注意I)。
关于php - Mysql_error() 未捕获 PHP 中的 INSERT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7906373/