晚上好。我目前正在做一个学校项目,但被卡住了。 这是代码:
foreach ($Pessoas as $key => $value) {
$ids = $ids . " OR id_Pessoas = " . $Pessoas[$key]['id'];
}
if (substr($ids, 0, 3) == " OR ") {
if (substr($ids, 0, strlen(" OR ")) == " OR ") {
$ids = substr($ids, strlen(" OR "));
}
}
这是我的PHP搜索系统控制器的一部分,我正尝试将其传递给模型。正如您可能已经想到的,我正在使用Slim Framework和PDO与MVC一起工作。
这个想法是搜索一个关键字,并使用该关键字搜索配置文件的名称或标签。我将首先使用以下查询来搜索个人资料名称:SELECT * FROM Pessoas WHERE nome LIKE :keyword AND hidden = 0
,直到我尝试使用上面的代码获取ID之前,一切都很好,因此我可以生成一段代码来完成以下查询SELECT * FROM Pessoas_tags WHERE
,但它不起作用。
上面代码背后的想法是生成类似" OR id_Pessoas = 1 OR id_Pessoas = 4"
的东西,然后删除第一个" OR "
,因此它没有给出错误,但是没有删除。我真的不知道为什么,那段代码不是我真正的代码,但是我不知道我从哪里获得的,因为它是几个月前的。
我希望这只是一个愚蠢的错误。如果您不是这样做,而是有更好的解决方案,我也非常感谢您在这里分享。感谢您的耐心配合和提前帮助。
答案 0 :(得分:0)
您的代码有问题。这应该删除“ OR”:
foreach ($Pessoas as $key => $value) {
$ids = $ids . " OR id_Pessoas = " . $Pessoas[$key]['id'];
}
if (!empty($ids) && substr($ids, 0, strlen(" OR ")) == " OR ") {
$ids = substr($ids, strlen(" OR "));
}
或者,由于条件为OR,因此您可以添加一个始终为false的无效语句,而无需删除任何“ OR”即可使其生效。像这样:
$ids = "1 != 1";
foreach ($Pessoas as $key => $value) {
$ids = $ids . " OR id_Pessoas = " . $Pessoas[$key]['id'];
}