【问题标题】:MYSQL REPLACE column values using prepared statements, string versionMYSQL REPLACE 使用准备好的语句替换列值,字符串版本
【发布时间】:2013-10-27 23:20:13
【问题描述】:

我有一个场景,我正在考虑根据现有列中的旧值,用新值更新类别列中的值。类别在单独的表中进行了更改,需要在此表中更新以反映更改。

我正在使用准备好的语句和两个数组来检查要替换的不同值:

$category = array($_POST['cat1'],$_POST['cat2'],$_POST['cat3'],$_POST['cat4']);
$oldCategory = array($_POST['catOld1'],$_POST['catOld2'],$_POST['catOld3'],$_POST['catOld4']);

for ($i=0;$i<4;$i++) {
    $strg="UPDATE table_name SET CATEGORY = REPLACE (CATEGORY, ?, ?)";
    $sql = $mysqli->prepare($strg) or die($db->error());
    $sql->bind_param('ss', $oldCategory[$i], $category[$i]);
    $sql->execute();
}

我认为这是我的 REPLACE 语句的语法与准备好的语句有关,它只会导致挂起,但在网上任何地方都找不到正确格式的参考。任何帮助表示赞赏。谢谢。

更新:好的,其中一件奇怪的事情:它现在可以工作了。为什么?我不知道。墨菲定律总是给我们带来沉重打击。 Wrikken,你是对的:语法没有问题。希望我能改装你。

不过,希望以上内容对其他人有用。我花了很多时间,没有在线参考来解决这个问题。希望有用。

【问题讨论】:

  • 它应该可以工作 (UPDATE... fieldname=REPLACE(fieldname, oldstring,newstring)),但根据您的桌子,可能需要一段时间......
  • 表很小:最多 100 条记录。不担心时间。但是不,我只是挂了,甚至没有返回任何错误消息,只是一个 500 错误。当当。

标签: php mysql replace


【解决方案1】:

使用这个:

$strg="UPDATE table_name SET CATEGORY = REPLACE (CATEGORY,$oldCategory[$i],$category[$i])";

代替这个:

$strg="UPDATE table_name SET CATEGORY = REPLACE (CATEGORY, ?, ?)";

【讨论】:

  • 我已经尝试过,以及其他变体,同时尝试解决,甚至使用 mysqli_real_escape_string 来确保适当的安全性:仍然没有乐趣。这不会消除准备好的语句所需的 VALUES 目标吗?无论如何,仍然以挂起结束,没有出现错误消息。不过,谢谢。
猜你喜欢
  • 2021-03-27
  • 2012-11-13
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 2011-09-16
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多