我有一个函数,它根据要插入到该列中的列名和值的关联数组以及一个表名(一个简单的字符串)生成一个准备好的 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,但为什么呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
mysql 中的 store_result() 和 get_result() 返回 falsestore_result() and get_result() in mysql returns false(mysql 中的 store_result() 和 get_result() 返回 false)
调用未定义的函数 mysqli_result::num_rows()Call to undefined function mysqli_result::num_rows()(调用未定义的函数 mysqli_result::num_rows())
PHP 准备好的语句问题PHP Prepared Statement Problems(PHP 准备好的语句问题)
mysqli_fetch_array 只返回一个结果mysqli_fetch_array returning only one result(mysqli_fetch_array 只返回一个结果)
PHP MySQLi 多次插入PHP MySQLi Multiple Inserts(PHP MySQLi 多次插入)
如何确保 MySQL 中的值在 PHP 中保持其类型?How do I make sure that values from MySQL keep their type in PHP?(如何确保 MySQL 中的值在 PHP 中保持其类型?)