在 table 中使用 str_replace 在 MYSQL 中查询

Using str_replace in table query in MYSQL

关于使用 str_replace 修改在 MYSQL 中使用变量的查询,有很多关于 SO 的示例,但我找不到可以解决我的问题的示例。

我有以下遗留查询,我正在用 PHP 和 MySQL 编写调试。

稍微简化一下:

$sql = "SELECT * from MOVIES WHERE cat = '$cat'";

如果 cat 具有特定值,例如“action”,我想检查“adventure”;

假设您从查询开始:

$cat = "action";
$sql = "SELECT * FROM MOVIES WHERE cat='$cat'";

我正在尝试修改查询:

$needle = "cat=".$cat;
$altcat = "adventure";
$altwhere = "cat=".altcat;
$sql = str_replace($needle,$altwhere,$sql); //NOTHING GETS REPLACED...NOT MATCHING Needle

我该怎么做?我认为问题与在 sql 字符串中使用空格或撇号有关,但无法使其正常工作。

感谢您的任何建议。

您想将 "cat='".$cat."'" 替换为 "cat='adventure'",而不是将 "cat=".$cat 替换为 "cat=adventure"

(虽然你说=前后有空格不一致。)

但是您不应该这样做,而应该使用占位符。

我不会尝试对 SQL 查询进行字符串替换。相反,只需使用查询参数。

$cat = 'action'; // suppose this is the input to your program

$sql = "SELECT * from MOVIES WHERE cat = ?";

if ($cat == 'action') {
  $cat = 'adventure';
}

$stmt = $db->prepare($sql);

$stmt->execute( [ $cat ] );