我发现我的PDO MySQL插件没有工作
它的基本格式是:
INSERT INTO `my_table` (id, email_hash, dob, 1, 6, 10) VALUES (?, ?, ?, ?, ?, ?)
实际上是这样的:
$InsertQuery = $db->prepare("INSERT INTO `my_table` (id, email_hash, dob, $NumbersString) VALUES (?, ?, ?, $QuestionMarkString)");
$InsertQuery->execute(array("$ID, $hashed_email, $dob, $YesNoString"));
变量$QuestionMarkString
填写(正确)问号占位符的数量。
变量$YesNoString
是一个" 1" s,其长度适当,可作为数据库中的标记。
所以即使我可以看到查询的第一部分成功地形成为:
INSERT INTO `my_table` (id, email_hash, dob, 1, 6, 10) VALUES (?, ?, ?, ?, ?, ?)
...并且执行数组的内容成功:
52, $2y$10$h9yXWUd8edQVMTSwZrX7T.pJ/C1pLDE9b081OtGmG6nbAtXr7lASK, 29062016, 1, 1, 1
..插入物仍然没有发生。我收到PHP错误说:
PHP警告:PDO :: prepare():SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在#1,6; 10)VALUES(?,?,?,?,?,?)'附近使用正确的语法。在线[等]
答案 0 :(得分:3)
应该是:
$InsertQuery->execute(array($ID, $hashed_email, $dob, $YesNoString));
此外,您不能拥有only contain digits:
的列标识符可以以数字开头,但除非引用可能不仅仅由数字组成。
因此你需要用反引号“
包装你的列答案 1 :(得分:0)
MY_TABLE
不包含$ NumbersString(1,6,10)
中的列或者您需要向列名称添加反引号 (`1`,`6`,`10`)
答案 2 :(得分:0)
尝试在数字列名称周围添加反引号(`):
{field: 'varillasEnLecho', title: 'Varilla en lecho', formatter: function(value, row, index) {
return '<input class="form-control data-input" value="' + value + '" row-index="' + index + '" field="varillasEnLecho" onchange="updateCell($(this))">';
}
}