gpt4 book ai didi

php - 如何使用 PHP 编写动态查询

转载 作者:行者123 更新时间:2023-11-29 06:20:27 25 4
gpt4 key购买 nike

尊敬的专家们,假设我必须搜索 3 个相关选项 1) 姓名 2) 地址 3) 电话。所以,我必须编写 8[八] 个单独的查询。请参阅下面的示例......

  $name= $_POST['name'];      
$address = $_POST['address'];
$phone= $_POST['phone'];
if($name!=""&& $address==""&& $phone=="")
{ $searching_query="SELECT id,name,address from info where info LIKE '%$info%'";}
.....................................
......................................
..........................................
else if($name!=""&&$address==""&&$phone!="")
{ $searching_query="SELECT id,name,address from info where name LIKE '%$ name%' AND phone LIKE '$phone' "; }
else if ($name!=""&&$address!=""&&$phone!="")
{ $searching_query="SELECT id,name,address from info where name LIKE '%$ name%' AND address LIKE '%$address%' AND phone LIKE '$phone' ";}

因此,如果相关搜索选项不止于此,那么我必须编写越来越多的查询。

现在我的问题是:如何动态编写精确的查询。我的意思是查询的 WHERE 子句将根据发布的值生成。

请帮忙!谢谢,里亚德

最佳答案

使用数组!并使用供应商特定函数转义用户输入,以防止 SQL 注入(inject)。在这种情况下应该使用 mysql_real_esacpe_string()。

$where = array();
foreach(array('name','address','phone') as $key) {
if(isset($_POST[$key]) && !empty($_POST[$key])) {
$where[] = $key . " LIKE '%" . mysql_real_escape_string($_POST[$key]) . "%'";
}
}
$query = "SELECT id,name,address FROM info";
if(empty($where)) {
$query .= "WHERE info LIKE '%" . mysql_real_escape_string($info) . "%'";
} else {
$query .= "WHERE " . implode(' AND ',$where);
}

关于php - 如何使用 PHP 编写动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4012987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com