gpt4 book ai didi

PHP 将数组值插入 MySQL 准备语句

转载 作者:行者123 更新时间:2023-11-29 05:25:01 24 4
gpt4 key购买 nike

我有一组值,我想将它们插入到数据库中。目前下面只插入数组中的第一个键值对,然后返回错误:

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 连接到数据库(在代码的其他地方)并且第一个键值对被成功插入但数组的其余部分没有插入。我猜我的语法在某处不正确

array('catid'=>$key, 'label'=>$value),

但是我想不通。非常感谢任何帮助!

最佳答案

你不应该在 INSERT 之后 fetchAll()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

关于PHP 将数组值插入 MySQL 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com