问题描述
我有一个函数,该函数根据要插入到该列中的列名和值以及表名(一个简单的字符串)的关联数组来生成准备好的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!
以下是为prepare语句构建的示例$ 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 (?, ?, ?, ?, ?, ?, ?, ?, ?)
有人可以看到此参数化语句有问题吗?有什么原因使prepare函数返回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 Prepare语句-返回False,但是为什么呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!