如何在foreach循环中执行两个不同的php准备语句?
我想获取一列的值,向其中添加一个字符串,然后用新值更新该列,并对数组的每个元素重复此操作。我想使用预先准备好的语句,所以我的梦想代码(我知道这行不通)是:如何在foreach循环中执行两个不同的php准备语句?,php,loops,mysqli,foreach,prepared-statement,Php,Loops,Mysqli,Foreach,Prepared Statement,我想获取一列的值,向其中添加一个字符串,然后用新值更新该列,并对数组的每个元素重复此操作。我想使用预先准备好的语句,所以我的梦想代码(我知道这行不通)是: $getcolumn = $link->prepare("SELECT `column` FROM `table` WHERE `id`=? LIMIT 1"); $getcolumn->bind_param("i", $a_value); $updatecolumn = $link->prepare("UPDATE `t
$getcolumn = $link->prepare("SELECT `column` FROM `table` WHERE `id`=? LIMIT 1");
$getcolumn->bind_param("i", $a_value);
$updatecolumn = $link->prepare("UPDATE `table` SET `column`=? WHERE `id`=? LIMIT 1");
$updatecolumn->bind_param("si", $newcolumnvalue, $a_value);
foreach($array as $a => $a_value) {
$getcolumn->execute();
$getcolumn->bind_result($columnvalue);
$getcolumn->fetch();
$newcolumnvalue = $columnvalue.$addedstring;
$updatecolumn->execute();
}
$getcolumn->close();
$updatecolumn->close();
然而,为了让它工作,我应该在执行$updatecolumn之前关闭$getcolumn。但是,如果我在foreach循环中关闭$getcolumn,它将不会对数组的所有元素重复。那么,我该如何使用事先准备好的语句以一种有效的方式来写呢?提前谢谢。就像上面的评论一样,我建议使用另一种方式,使用MySQL内置函数的
CONCAT
,而不是从第一行获取所有行:
$updatecolumn = $link->prepare("UPDATE `table` SET `column` = CONCAT(`column`, ?) WHERE id = ?");
$updatecolumn->bind_param("si", $addedstring, $a_value);
$updatecolumn->execute();
它只是消除了获取行的第一步,这只是更新与该ID相关的列,并将当前列值连接到所需的添加字符串。那么,您需要执行第一步,从第一步获取,然后更新第二步,为什么需要第一条语句?你能不能只使用mysql内置的
concat(列名?)
只进行一次更新我不熟悉concat。请帮助我理解如何在使用修改后的值更新列之前,使用concat.Perfect向获取的列值添加字符串!非常感谢你。这是拼图中丢失的一块。:)@安纳西沃拉尼很高兴这有帮助