Mysqli Prepare Statement - Returning False, but Why?(Mysqli Prepare 语句 - 返回 False,但为什么呢?)
问题描述
我有一个函数,它根据要插入到该列中的列名和值的关联数组以及一个表名(一个简单的字符串)生成一个准备好的 INSERT 语句:
I have a function that generates a prepared INSERT statement based on an associative array of column names and values to be inserted into that column and a table name (a simple string):
function insert ($param, $table) {
$sqlString = "INSERT INTO $table (".implode(', ',array_keys($param)).') VALUES ('.str_repeat('?, ', (count($param) - 1)).'?)';
if ($statement = $this->conn->prepare($sqlString)):
$parameters = array_merge(array($this->bindParams($param), $param));
call_user_func_array(array($statement, 'bind_param', $parameters));
if (!$statement->execute()):
die('Error! '.$statement->error());
endif;
$statement->close();
return true;
else:
die("Could Not Run Statement");
endif;
}
我的问题是 $this->conn->prepare(它是一个类的一部分,conn 是一个新的 mysqli 对象,它没有问题)返回 false,但没有给我一个原因!
My problem is that $this->conn->prepare (it's part of a class, conn is a NEW mysqli object, which works with no issues) returns false, but does not give me a reason why!
这是为准备语句构建的示例 $sqlString:
Here is a sample $sqlString that gets built for the prepare statement:
INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
有人能看出这个参数化语句有什么问题吗?准备函数返回 false 的任何原因?
Can anyone see a problem with this parameterized statement? Any reason the prepare function would return false?
推荐答案
我正在将解决方案复制到此答案中,以便可以对此进行投票,否则该问题将永远出现在未回答的问题"中.我将这个答案标记为 CW,所以我不会得到任何分数.
I'm copying the solution into this answer so this can be given an upvote, otherwise the question will appear in the "unanswered questions" forever. I'm marking this answer CW so I won't get any points.
@Andrew E. 说:
@Andrew E. says:
我刚打开mysqli_report(MYSQLI_REPORT_ALL) 到更好地了解什么是继续 - 结果是我的一个字段名称不正确 - 你会认为 prepare() 会抛出一个异常,但它默默地失败了.
I just turned on
mysqli_report(MYSQLI_REPORT_ALL)to get a better understanding of what was going on - turns out that one of my field names was incorrect - you'd think thatprepare()would throw an exception, but it fails silently.
这篇关于Mysqli Prepare 语句 - 返回 False,但为什么呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Mysqli Prepare 语句 - 返回 False,但为什么呢?
基础教程推荐
- 如何替换eregi() 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
