在 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 ] );
关于使用 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 ] );