这里是新的,并且非常适合编程,所以请轻松实现..
我发现由于重复的记录错误,我的INSERT
失败了。我通过在带有文字的MySQL控制台中运行查询来解决这个问题,其中出现错误#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错误信息。老实说,我不确定我应该看到什么,但通过阅读其他一些SO问题,我已经仔细检查了我的php.ini文件以进行错误处理,并且E_ALL和display_errors设置得恰当(虽然不确定是否在这种情况下很重要。)
我的逻辑中有什么东西我不理解,就像链接资源mysql_error()的范围一样吗?
感谢您的帮助,我希望这是一件令人尴尬的事情。
我知道上面缺少XSS和安全预防措施以及统一的异常处理。宝贝步骤虽然。为了讨论起见,这里简化了它。
答案 0 :(得分:3)
您正在使用mysqli(请注意 i )进行数据库操作,但是正在调用mysql_error(没有 i )。它们是两个完全不同的接口,根本不共享内部状态。一个数据库处理/结果在另一个中不可用。
请尝试mysqli_error()
(请注意我)。
答案 1 :(得分:0)
据我所知,您似乎使用MySQLi类进行连接和查询,但您正在尝试访问MySQL错误消息。 MySQLi和MySQL不一样,因此一个中的错误不会显示在另一个中。您应该查找MySQLi的错误处理,而不是MySQL。
答案 2 :(得分:0)
您混淆了两种不同的连接mySQL DB的方法。
mysql_error()
仅适用于通过mysql_query()
运行的查询。
在使用mysqli时,必须使用mysqli_error()