PHP MySQLi 预编译语句的 returns false

PHP MySQLi Prepaired Statement's returns false

我在使用预配对语句系统时遇到问题,尽管 类 的系统管理我们的数据库 Table 条目。

所以我遇到的问题是

生成的 SQL
INSERT INTO `sys_User` SET `email` = ? `last_name` = ? `password` = ? `encryption` = ?

下面的行 $stmt = $db->prepare($sql); 失败(返回 false)

但是我没有从数据库引擎返回错误,

Array
(
    [Number] => 256
    [String] => MySQLi Query failed MySQL said ''.
    [File] => /var/www/models/table/base.php
    [Line] => 282
)

在所有数据库 class Table 类.

的基础中
$db = self::getDatabase();
$bindParamArgs = array();
$bindParamArgs[] = "";
$sql = "INSERT INTO `".$this->getTableName()."` SET ";
foreach($this->updated as $name => $val){
    $sql .= " `".$name."` = ?";
    $bindParamArgs[0] .= $columns[$name]->Type;
    $bindParamArgs[] = &$this->values[$name]; 
}
echo $sql;
$stmt = $db->prepare($sql);
if(!$stmt){
    \trigger_error("MySQLi Query failed MySQL said '".$stmt->error."'.", \E_USER_ERROR);
}
$result = \site\model\Database::getEvaluatedBind($stmt, $bindParamArgs);

一些需要的信息: self::getDatabase(); Returns 连接数据库 (MySQLi) 对象

$this->getTableName() 获取 table 我们正在使用的 table 的名称 这是根据已调用的 class 名称得出的

$this->updated Table 中所有列的数组如果已被修改并需要保存,则等于布尔值 true。

\site\model\Database::getEvaluatedBind(mysqli_stmt &$stmt, $params) 我创建的调用 bind_param 的自定义方法,它让该死的引用系统快乐,

这一定很简单,我想念我只是无法解决

答案基于@jeroen 上面的评论

这是 运行 你的错误:

INSERT INTO `sys_User` SET `email` = ? `last_name` = ? `password` = ? `encryption` = ?

应该是:

INSERT INTO `sys_User` SET `email` = ?, `last_name` = ?, `password` = ?, `encryption` = ?