- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
根据 php 手册,您可以通过询问 $stmt->error 和 $stmt->errno 来检索任何准备好的语句方法中的错误,但是 bind_param 方法似乎从来没有将这些设置为错误,其他人可以证实这一点吗?或者告诉我我缺少什么?
例如:
echo "Start\n";
$db = new mysqli('localhost','test','xxxxxx','test');
$val = 1;
$st = $db->prepare('insert into tblTest set field1=?');
if($st == false)
{
printf("prepare: %s %d\n",$db->error,$st->errno);
}
$rs = $st->bind_param('is', $val);
if($rs == false)
{
printf("bind_param: %s %d\n",$st->error,$st->errno);
}
$rs = $st->execute();
if($rs == false)
{
printf("execute: %s %d\n",$st->error,$st->errno);
}
$rs = $st->close();
if($rs == false)
{
printf("close: %s %d\n",$st->error,$st->errno);
}
echo "Finish\n";
从命令行运行以上显示:
Start
PHP Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in test.php on line 14
bind_param: 0
execute: No data supplied for parameters in prepared statement 2031
Finish
因此 php 将此视为警告,bind_param 返回 false,但未设置错误和 errno。执行也失败了,并正确设置了错误和错误号
这是一个错误吗?
最佳答案
MySQLi::error
和 MySQLi::errno
是 RDBMS 返回给 PHP 的错误代码和消息的容器,不是错误设置语句时在PHP代码中遇到。对 bind_param()
的错误调用(参数不足)显然不会与 RDBMS 通信,因此不会从 RDBMS 接收到错误。
根据to the docs , bind_param()
在失败时返回 bool 值 FALSE
。因此,您需要验证它是否已成功调用。
$rs = $st->bind_param('is', $val);
if ($rs) {
$st->execute();
}
关于php - mysqli bind_param 不设置 $stmt->error 或 $stmt->errno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11374672/
我无法确定以下 ruby 内联救援代码有什么问题 def test_check() p "first st" t = 5 * lsdj rescue return false p "second
在完成准备好的 mysqli$stmt->close() 和 $stmt->free_result() 之间的区别强>声明。 到目前为止我使用: $mysqli = new mysqli(host,u
我正在尝试登录,输入用户名和密码,如果未显示“同意元素”或显示“管理标题元素”,则编写一个条件,然后单击管理元素,但我的代码仅检查我同意元素不存在显示并抛出异常。 driver.get("ente
根据 php 手册,您可以通过询问 $stmt->error 和 $stmt->errno 来检索任何准备好的语句方法中的错误,但是 bind_param 方法似乎从来没有将这些设置为错误,其他人可以
你能帮我编写高效的 Java 代码吗? 逻辑是:我必须读取文件中的第一个有效记录并生成文件名。无效/有效记录由该行的前 2 个字符标识。无效记录的前 2 个字符填充在名为ignoreTrans 的 A
我试图从下面的代码中获取结果,但是没有返回任何结果。 $stmt->execute(array(id)) 未按预期运行。它似乎在其他代码段中工作正常,我已经比较了它们,没有发现任何差异。 $stmt
我正在尝试检查从 cookie 中检索到的 id 是否存在于数据库中,但是这部分代码 $stmt->bind_result($id, $uname); 和 $username = $uname; 按照
我已经准备好阅读所有其他主题,但没有找到解决方案。这是我的代码 $DevolverUser = $_SESSION['DevolverUser']; $DevolverPas
我正在尝试准备一个mysqli查询,但是它在没有给出任何错误的情况下以静默方式失败。 $db_hostname = "test.com"; $db_database = "dbname";
我想知道 1.java中语句关闭的目的 2.如果我没有在程序中提供 stmt.close() 会发生什么 try{ Statement DelQTY=OPConnect.crea
需要帮助来完成这个简单的任务。该 sp 应该提供一个结果集,并将从 MS-Access-Database 报告目的中调用。 表名可变,但以数字 (lsid) 结尾。使用串联。max_prepared_
我有一个带有 echo 的 php 代码来检查它停止的位置(它不会崩溃,但会停止发送 echo 并且不能按预期工作) $stmt=$conexion->prepare("SELECT Email, M
我不明白我做错了什么。 我在 SQL Server 中有一个存储过程,我需要迁移到 MySQL。 当我运行与打印相同的查询时,该查询正在工作,但相同的变量无法生成准备语句,从而导致语法错误。 Erro
我正在我的事件网站上创建搜索过滤器。有 3 个下拉输入:位置、事件类型、日期。 当用户提交搜索过滤器时,表单会发布更改 mysql 查询的值,这将在用户屏幕上显示不同的事件。我无法找到灵活的解决方案。
我如何mysqli::stmt->bind_param在mysql中被视为NULL的东西? 我目前正在使用 $stmt->bind_param('s', 'NULL'); 最佳答案 bind_para
我在此处运行准备 stmt 时遇到语法错误。我尝试手动执行 @c 中的查询并且它有效。不知道为什么 stmt 会给出这个错误。这是我正在使用的代码。 SET @i=24; SET @Bill_mont
当 ($stmt->fetch()) 服务器不会读取过去 if (isset($_POST['join'])) { $selectedgame = $_POST['join']; $stmt = $l
我的代码: $stmt = $user_home->runQuery("SELECT * FROM tbl_users, tbl_products WHERE userID=:uid and crea
我不明白为什么我的函数没有得到结果而只是得到空值。我正在使用 PhpStorm;我的所有连接都很好(Apache、MySQL、PhpMyAdmin),我已经检查过它们,其他其他服务也正常工作。 这是我
这个问题在这里已经有了答案: Why does mysqli num_rows always return 0? (1 个回答) 关闭 6 年前。 我想检查 if ($numRows >= 1) 那
我是一名优秀的程序员,十分优秀!