Php 在MYSQL表查询中使用str_替换
有很多关于使用str_replace修改MYSQL中使用变量的查询的例子,但我找不到一个能解决我的问题的 我有下面的遗留查询,我正在用PHP和MySQL进行调试 这有点简化:Php 在MYSQL表查询中使用str_替换,php,mysql,str-replace,Php,Mysql,Str Replace,有很多关于使用str_replace修改MYSQL中使用变量的查询的例子,但我找不到一个能解决我的问题的 我有下面的遗留查询,我正在用PHP和MySQL进行调试 这有点简化: $sql = "SELECT * from MOVIES WHERE cat = '$cat'"; 如果cat有一个特定的值,比如说,“action”,我想检查“冒险” 假设您从查询开始: $cat = "action"; $sql = "SELECT * FROM MO
$sql = "SELECT * from MOVIES WHERE cat = '$cat'";
如果cat有一个特定的值,比如说,“action”,我想检查“冒险”
假设您从查询开始:
$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 ] );
你打算换多少人?动作/冒险=1次替换。替换值,而不是整个条件<代码>如果($cat=='action'){$cat='adventure';}无论如何,我希望你使用一个事先准备好的语句。我如何使用占位符?请看比尔的答案。是的,这可能是最好的方法。我将ysth标记为已接受,因为他建议了这种方法,并对您进行了投票,以显示如何做到这一点。@user这是实现这一点的专业方法。通过接受不太专业的答案,你可能会无意中误导研究人员应该使用哪个答案。如果我错了,请纠正我,但首先回答应该也有意义。在Bill给出完整的PDO答案之前,Ysth首先提出了PDO方法以及问题的字面答案(2种方法)。如果伊斯特的答案不正确,那将是另一回事,但它是正确的,他还建议采用占位符方法,比尔提供了完整的答案。我必须选择一个,所以我选择了第一个,并对第二个进行了投票。没有理由否决投票和结束问题。在回答之后。我不关心要点。关键是你的问题解决了。任何人谁有一个类似的问题在未来,并看到这个线程将得到这两个答案的好处。