【发布时间】:2013-03-24 10:35:14
【问题描述】:
我确定这是重复的,但我在此处的网站上尝试了几种不同的方法,但没有一种方法适合我。我在 php 中调用我的函数,发送 $mysqli 连接、$clientID 和要上传的 $tagFields 数组。
它正在“工作”,但值始终为空。我已将 echo "$tagName" 放入 foreach 中,它正在读取它,但没有将其发送到数据库。但是,$clientID 正在传递信息。所以基本上它所做的就是将一致的空白行上传到我的数据库中。我在这里做错了什么?
function tagRefresh($mysqli,$clientID,$tagFields) {
$stmt = $mysqli->stmt_init();
$query = "INSERT INTO client_tags (client_id,tag_category) VALUES (?,?) ";
$stmt->prepare($query);
foreach($tagFields as $tagName) {
$stmt->bind_param('is',$clientID,$tagName);
$stmt->execute();
}
}
$tagFields 的一些示例值:
$tagFields[0] = "Regional";$tagFields[1] = "Automotive";$tagFields[2] = "Maintenance";
【问题讨论】:
-
我相信
bind_param只绑定到变量的引用。因此,由于您的foreach在每次迭代时都会重置$tagName,因此绑定失败。不幸的是,我在 mysqli 中找不到bindValue(PDO) 等效项。此外,在您的foreach完成后,您只需要execute一次。 -
你的代码对我有用。
-
@MiroslavStopka,你运行的是什么版本的 php/mysql/apache?
-
@MDWar PHP 版本 5.3.8, MySQL: 5.5.16 , Apache 版本 Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0 .4 Perl/v5.10.1。顺便检查一下你的表 client_tags (列属性...)