php - Mysql_error() 未捕获 PHP 中的 INSERT 错误

标签 php mysql

这里是新人,编程真的很新手,所以放轻松......

我发现我的 INSERT 由于重复记录错误而失败。我通过在 MySQL 控制台中使用文字运行查询来解决这个问题,其中弹出了 err#1062。

我想了解的是为什么 mysql_error()mysql_errno() 在我的 PHP 脚本中没有捕获此错误。

下面是我所做的一般设置。我有一个表单提交到一个调用 data_insert()

的 php 文件
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/

相关文章:

php - 开源聊天应用程序?

php - 如何在 WordPress 中按派生 SQL 列排序?

java - 如何使用html、servlet将图像插入mysql

mysql - Django:按天分组和计数

mysql - MySQL NDB Cluster 是否考虑节点距离?如果复制品更接近,它会使用它们吗?

php - Typo3 扩展库 : Adding subcategory changes alls subcategories names to number values

php - 使用 PHP 将 "jQuery Editable Invoice"的值提交到 MySQL DB

javascript - 数字插入数据库,但不插入字符或数字/字符

mysql - JSP,mysql - 如何从新的查询结果中获取和存储变量

php - 使用 PhpStorm 在 Docker 容器中运行 PHPUnit