gpt4 book ai didi

php pdo 准备语句动态过滤器

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

我想对 pdo 语句使用简单的过滤器。以前我使用下面的代码。

$sql = "select * from cities where 1 ";
$city = $_REQUEST['city_name'];
if($city!=""){
$sql = $sql. " and name ='".$city."'";

}
$country = $_REQUEST['country_name'];
if($country!=""){
$sql = $sql. " and country_name ='".$country."'";

}

$result= mysql_query($sql);

如果没有名称或国家名称,我想使用过滤器,它应该显示所有结果,如果选择名称,则只有城市名称结果会出现。如果选择国家/地区,则国家/地区将适用,否则国家/地区过滤器将不适用。

现在我想将 same 与 pdo 准备好的语句一起使用,但我不知道如何创建它。

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

最佳答案

试试这个。 $dynamic_fields 必须在键中包含 mysql 字段名称,在值中包含输入名称:

// mysql_fileld_name => request_key_name
$dynamic_fields = array(
'name' => 'city_name',
'country_name' => 'country_name'
);
$field_values = array();
foreach ($dynamic_fields as $mysql_fname => $input_fname) {
if (!empty($_REQUEST[ $input_fname ])) {
$sql .= ' AND `' . $mysql_fname . '` = :' . $mysql_fname;
$field_values[ ':' . $mysql_fname ] = $_REQUEST[ $input_fname ];
}
}

$pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
$statement = $pdo->prepare($sql);
$statement->execute($field_values);

$result = $statement->fetchAll();

关于php pdo 准备语句动态过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106975/

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