如何在 PHP 自定义 mysqli 函数中显示 SQL 错误?

Posted

技术标签:

【中文标题】如何在 PHP 自定义 mysqli 函数中显示 SQL 错误?【英文标题】:How to show SQL error in PHP custom mysqli function? 【发布时间】:2015-10-22 14:54:18 【问题描述】:

我找到了一个mysqli查询函数的php自定义函数,但是我的问题是,如何显示mysqli函数的错误?

这里是示例 php mysqli 函数:

function connect()

    $con    =   mysqli_connect(DB_HOST, DB_USER, DB_PASS);
    $db     =   mysqli_select_db($con, DB_NAME);
    return $con;

查询功能:

function query($sql)

    return mysqli_query(connect(),$sql);

获取关联函数:

function fetchAssoc($sql)

    return mysqli_fetch_assoc($sql);

这是它的调用或使用方式:

$sql_select = query("SELECT * FROM table_name");
$sql_result = fetchAssoc($sql_select);
$tbl_id = $sql_result['id'];

如果 SQL 查询正确或出现查询错误(如字段名称不正确或表不存在),如何在此处显示?

【问题讨论】:

【参考方案1】:

在任何查询之后,最后一个 mysqli 错误都存储在连接资源中。要检索它:

echo mysqli_error($con);

如果要在查询出现错误后直接杀死脚本:

mysqli_query($con, "some query") or die(mysqli_error($con));

如果您有需要,还有错误号:

echo mysqli_errno($con);

例子:

mysqli_select_db($con, "something") or die(mysqli_error($con));
//if the database is not found it'd print out 'Unknown database "something"'

【讨论】:

取决于您需要如何使用它。或者你想怎么读。只是为了调试吗?错误存储在任何 mysqli 查询之后。因此,您可以在任何查询后调用错误函数。它存储最后一个错误。在mysqli_querymysqli_select_db 之后查看获取数据库是否出错。可以通过这种方式检索任何 mysqli 错误【参考方案2】:

我在 mysql_ 中使用 like 而不是 mysqli。

function query($sql, $flag= false)

 $result  = mysqli_query(connect(),$sql);

 if($flag == true && $result == false )
 
     echo mysqli_errno()."_--".mysqli_error()."<br /> in query.:".$sql;
 

  return $result;


另一个问题是你所有的查询都调用了 connect() 函数。

所以当你使用函数 query() 时,你的 mysql 连接将会重置。


$mysql_con;

$mysql_con = connect();

function query($sql, $flag= false)

 global $mysql_con;

 $result  = mysqli_query($mysql_con,$sql);

 if($flag == true && $result == false )
 
     echo mysqli_errno()."_--".mysqli_error()."<br /> in query.:".$sql;
 
  return $result;

【讨论】:

mysql 已过时且安全性较低。你需要使用 mysqli 大声笑。 感谢您的建议。但是我所有的库都是为 mysql 设计的。【参考方案3】:

你可以使用 php 函数 mysqli_error() 和 mysqli_errno() 您可以访问 php.net 获取有关此功能的详细文档

【讨论】:

以上是关于如何在 PHP 自定义 mysqli 函数中显示 SQL 错误?的主要内容,如果未能解决你的问题,请参考以下文章

PHP-------MySQLi 的函数

如何在 PHP 中正确使用 mysqli_free_result 函数

php Mysqli 未定义函数

php mysqli_query 函数似乎运行了两次

php的mysqli_connect函数显示 No such file or directory错误以及localhost换成127.0.0.1执行成功

如何使用 NGINX、PHP-FPM 在 docker-compose.yml 文件中加载 mysqli 扩展