【发布时间】:2016-04-19 08:22:19
【问题描述】:
以下代码有问题。我正在使用 $_GET 获取用户主题,然后将其发送到服务器以查看该行是否包含主题,如果包含,则它为匹配的每一行返回主题匹配行。这目前工作正常,但如果用户输入让我们说“英语,数学”并且在数据库中它被列为“数学,英语”,它将失败并且不会回显该行,尽管它只是以不同的顺序正确。有什么我做错了吗??
谢谢,
柯蒂斯
$subjects = $_GET["subjects"];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC) and ($counter < $max))
{
if(preg_match('/'.$subjects.'/',$row['subjects'])){
echo "subject matches row";
}
}
更新:尝试了下面的代码,即使主题不正确,也会回显每一行。
function is_matched($subjectsFromUs, $subjectsFromDb){
$subjectsFromUs = explode($subjectsFromUs, ',');
$subjectsFromDb = explode($subjectsFromDb, ',');
foreach($subjects as $s){
if(!in_array($s, subjectsFromDb))
return false;
}
return true;
}
while ($row = mysql_fetch_array($result, MYSQL_ASSOC) and ($counter < $max))
{
if(is_matched($subjects,$row['subjects']) == true ){
echo "subjects matched";
}
}
【问题讨论】:
标签: php mysql get preg-match row