如何查询MySQL数据库中的PHP$\u GET数组
我正在尝试创建一个简单的搜索字段,用户可以在其中编写文本。 该文本被传输到php,然后php通过GET访问该文本。 如果文本包含空格,它将转换为数组。 问题是我不知道如何查询以数组作为Where条件的条目。 我尝试了几个答案,比如内爆(“,”,$array)或WHERE IN($array)。 他们都不为我工作。 要么是数组到字符串的比较错误,要么是未知列错误。 $\u GET数组包含表单提交的字符串,因此这不是错误 谢谢你的帮助 PHP脚本如何查询MySQL数据库中的PHP$\u GET数组,php,mysql,arrays,Php,Mysql,Arrays,我正在尝试创建一个简单的搜索字段,用户可以在其中编写文本。 该文本被传输到php,然后php通过GET访问该文本。 如果文本包含空格,它将转换为数组。 问题是我不知道如何查询以数组作为Where条件的条目。 我尝试了几个答案,比如内爆(“,”,$array)或WHERE IN($array)。 他们都不为我工作。 要么是数组到字符串的比较错误,要么是未知列错误。 $\u GET数组包含表单提交的字符串,因此这不是错误 谢谢你的帮助 PHP脚本 //string containing the su
//string containing the submitted searchbox value
$query=$_GET['Searchquery'];
//Seperate string where whitespaces are detected and create array holding these strings
$querystring=explode(" ",$query);
//Connection
$con=new mysqli($Server,$User,$UserPassword,$Database);
//print_r for testing
print_r($querystring);
//That's the problem
$sql="SELECT * FROM tb_user WHERE ??????"
if($result=$con->query($sql))
{
$word;
//Check if query result is one or multiple entries
if($result->num_rows==1)
$word="entry";
else
$word="entries";
//output_____________
echo("<h1>We found ".$result->num_rows." ".$word." meeting your Keyword '".$query."'</h1>");
while($row=$result->fetch_assoc())
{
echo("<div id='founduser'><a href='profile.php?ProfileLink=".$row['ProfileLink']."'><h1>".$row['GivenName']." ".$row['FamilyName']."</h1></a></div>");
}
}
//______________________________
else {
echo($con->error);
}
?>
//包含已提交搜索框值的字符串
$query=$\u GET['Searchquery'];
//分离检测到空白的字符串,并创建包含这些字符串的数组
$querystring=explode(“,$query”);
//联系
$con=newmysqli($Server、$User、$UserPassword、$Database);
//用于测试的打印机
打印(查询字符串);
//这就是问题所在
$sql=“从tb\U用户中选择*
如果($result=$con->query($sql))
{
$word;
//检查查询结果是一个条目还是多个条目
如果($result->num_rows==1)
$word=“entry”;
其他的
$word=“条目”;
//输出_____________
echo(“我们找到了“$result->num_rows.”“$word.“满足您的关键字”。$query.”);
而($row=$result->fetch_assoc())
{
回声(“”);
}
}
//______________________________
否则{
echo($con->error);
}
?>
与
explode()
相反。它将使用提供的字符串连接数组的所有索引。如果从查询中提取内爆
,则会得到如下结果:
item1'、'item2'、'item3
从这里开始,我们将丢失第一项和最后一项的外部引号,因此我们可以将它们添加到查询中,如上图所示
上述查询将生成为:
SELECT*FROM tb\u user WHERE column\u name IN('item1'、'item2'、'item3')
该子句检查所提供的值是否与给定列中的anythign匹配
与
explode()
相反。它将使用提供的字符串连接数组的所有索引。如果从查询中提取内爆
,则会得到如下结果:
item1'、'item2'、'item3
从这里开始,我们将丢失第一项和最后一项的外部引号,因此我们可以将它们添加到查询中,如上图所示
上述查询将生成为:
SELECT*FROM tb\u user WHERE column\u name IN('item1'、'item2'、'item3')
该子句检查提供的值是否与给定列中的任何内容匹配。我知道。这就是为什么我在上面评论“这就是问题所在”。我不知道该写什么。这只是一个占位符对不起,我在阅读实际问题后阅读了代码:p。。看看我的回答是否有用。。别忘了在我知道的“where”后面需要一个coliumn名称。这就是为什么我在上面评论“这就是问题所在”。我不知道该写什么。这只是一个占位符对不起,我在阅读实际问题后阅读了代码:p。。看看我的回答是否有用。。别忘了在“where”代码后面需要一个coliumn名称,只有答案通常没有什么帮助。最好解释一下你做了什么以及为什么做,这样OP就可以从中真正学到一些东西,而不是只是复制/粘贴它然后上路。但是你能解释一下代码的确切含义吗?因为我想知道怎么做,而不仅仅是代码。你的回答仍然很好,我真的很感激。但我不能从中学到什么。当然,添加了更多的信息。只有代码的答案通常没有什么帮助。最好解释一下你做了什么以及为什么做,这样OP就可以从中真正学到一些东西,而不是只是复制/粘贴它然后上路。但是你能解释一下代码的确切含义吗?因为我想知道怎么做,而不仅仅是代码。你的回答仍然很好,我真的很感激。但我真的无法从中学习。当然,添加了更多信息。
$sql="SELECT * FROM tb_user WHERE column_name IN ('".implode("','", $querystring)."')";