gpt4 book ai didi

php - 从 mysqli bind_param 捕获警告信息

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:05 24 4
gpt4 key购买 nike

如果您使用错误数量的参数执行 mysqli_stmt->bind_params(...),您会在浏览器中收到以下警告:

Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:
Number of variables doesn't match number of parameters in prepared statement in ...

解决编码问题很容易,但我发现自己捕获该警告以控制它的显示方式并不容易(将来我可能会引发更多警告)。我想:

  • 禁止自动显示警告
  • 捕获警告消息并按照我自己的方式显示

简单地调用 @mysqli_stmt->bind_params(...) 似乎可以抑制显示的默认警告消息。这是最好的方法吗?

我似乎从 mysqli 获得的唯一信息是对 mysqli_stmt->bind_params 的调用返回 FALSE。然而,也许因为这是一个警告,mysqli->errormysqli_stmt->error 中没有数据。因此,我不清楚在哪里可以找到该消息的文本。有什么想法吗?

谢谢。

最佳答案

只要您有 PHP 5.3+,您要查找的方法就是 error_get_last - PHP docs .这是一个简单的例子:

$success = @$mysqli_stmt->bind_params(...)
if ( !$success ) {
$einfo = error_get_last();
$an_output_str = "Error of type (".$einfo['type']."): ".$einfo['message'];
// $einfo['file'] and $einfo['line'] are also filled with useful info
}

编辑:

正如下面另一位先生所建议的那样,展望 future ,考虑一种更通用的警告/错误解决方案可能是明智的,这些警告/错误无法通过返回值和/或易于阅读的错误值设置来干净地处理.在这种情况下,您可能想要探索 set_error_handler,它在 PHP 4.01 中一直受到支持 - PHP Docs .

最基本的实现可能看起来像这样(模仿我之前写的):

function deal_with_error($errno,$errstr,$errfile,$errline) {
$an_output_str = "Error of type (".$errno."): ".$errstr;
// $errfile, $errline also have useful info
}

set_error_handler("deal_with_error");

关于$errno的不同取值,看看here .例如,您收到的警告的 $errno 为 2。

关于php - 从 mysqli bind_param 捕获警告信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18409051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com