19 php mysqli prepared-statement
我有一个函数,它根据要插入到该列的列名和值的关联数组以及一个表名(一个简单的字符串)生成一个准备好的INSERT语句:
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;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是$ this-> conn-> prepare(它是一个类的一部分,conn是一个新的mysqli对象,它没有问题)返回false,但是没有给我一个理由!
以下是为prepare语句构建的示例$ sqlString:
INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到这个参数化语句的问题?prepare函数返回false的原因是什么?
Bil*_*win 56
我正在将解决方案复制到这个答案中,所以这可以给予一个upvote,否则问题将永远出现在"未答复的问题"中.我将这个答案标记为CW,所以我不会得到任何积分.
@Andrew E.说:
我刚刚
mysqli_report(MYSQLI_REPORT_ALL)开始更好地理解发生的事情 - 事实证明我的一个字段名称是不正确的 - 你认为prepare()会引发异常,但它会无声地失败.
| 归档时间: |
|
| 查看次数: |
22663 次 |
| 最近记录: |