我有一个值数组,我试图插入到数据库中。目前,下面只插入数组中的第一个键值对,然后返回错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in /_/components/php/functions.php:33
Stack trace:
0 /_/components/php/functions.php(33): PDOStatement->fetchAll()
1 /testdb.php(44): Photo\DB\query('INSERT into cat...', Array, Object(PDO))
2 {main} thrown in /_/components/php/functions.php on line 33
functions.php中的第33行在此函数中
function query($query, $bindings, $conn){
$stmt = $conn->prepare($query);
$stmt->execute($bindings);
$results = $stmt->fetchAll(); <---line 33
return $results ? $results : false;
}
主要代码是
foreach ($sitecategories as $key => $value) {
// print "this is key $key and this is value $value";
if ( $conn ) {
$catquery=query("INSERT into categories (cat_id, label) VALUES (:catid, :label)",
array('catid'=>$key, 'label'=>$value),
$conn);
} else {
print "could not connect to the database";
}
}
所以我将OK连接到DB(代码中的其他位置),第一个键值对成功插入,但不是数组的其余部分。我猜测我的语法在
中的某处是不正确的array('catid'=>$key, 'label'=>$value),
但我无法弄明白。任何帮助非常感谢!
答案 0 :(得分:3)
fetchAll()
之后你不应该INSERT
。 INSERT
没有结果集。
我刚刚在PDOStatement对象上运行了插入然后调用fetchAll()
的测试,并确认这会导致您显示的“常规错误”异常。
$stmt = $dbh->prepare("insert into foo () values ()");
$stmt->execute();
$result = $stmt->fetchAll();
抛出:
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[HY000]: General error' in /Users/billkarwin/workspace/PHP/21194489.php:14
Stack trace:
#0 /Users/billkarwin/workspace/PHP/21194489.php(14): PDOStatement->fetchAll()
#1 {main}
thrown in /Users/billkarwin/workspace/PHP/21194489.php on line 14
答案 1 :(得分:0)
您的值数组不正确。密钥也需要:
。
array(':catid'=>$key, ':label'=>$value)