我想对 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/