如何在 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_query
或mysqli_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_free_result 函数
php的mysqli_connect函数显示 No such file or directory错误以及localhost换成127.0.0.1执行成功