我是PHP的PDO的新手,并且我的数据库类的功能有点问题:
function set($query, $args = array()) {
try {
$query = $this->rs->prepare($query);
$x = 1;
foreach($args as $arg) {
$query -> bindValue($x, $arg);
$x++;
}
$query->execute($args);
}
catch(PDOException $e) {
print_r($e);
}
}
它应该自动绑定“?”在查询数组$args
中的值。
示例:
$db -> set("INSERT INTO messages(date,regard,sender,to,msg) VALUES('?','?','?','?','?')", array(
"bla",
"bla2",
"bla3",
"bla4",
"bla4"
));
但它不起作用。在数据库中,所有cols都包含那些愚蠢的问号。问题在哪里?
答案 0 :(得分:1)
您引用了问号,因此数据库会看到只包含一个?
的文字字符串,而不是占位符标记(问号)。只需使用问号而不引用它:系统会自动使用相关数据类型的正确语法。
答案 1 :(得分:1)
尝试从查询中删除引号:
$db -> set("INSERT INTO messages(date,regard,sender,to,msg) VALUES(?,?,?,?,?)", array(
"bla",
"bla2",
"bla3",
"bla4",
"bla4"
));
如果您只是输入字符串,则可以使用bind_value
PDO::PARAM_STR
$query -> bindValue($x, $arg, PDO::PARAM_STR);
答案 2 :(得分:1)
它应该与引号'?'
一样,即它应该是?
$db -> set("INSERT INTO messages(date,regard,sender,to,msg) VALUES(?,?,?,?,?)", array(
"bla",
"bla2",
"bla3",
"bla4",
"bla4"
));