php - 如何优化mysql中的查询

标签 php mysql

我的 mysql 搜索查询是:

$result = mysql_query("SELECT * FROM room_tb WHERE location ='{$location}' AND price BETWEEN '$minprice' AND '$maxprice' ")or die('Could not connect: ' . mysql_error()); ;

这会强制在表格中输入位置以及最低和最高价格。 我想要一个查询,可以让用户输入位置或最高和最低价格,并允许用户通过这两个字段进行搜索。我该怎么办?

最佳答案

当我使用可选字段生成查询时,我为每个字段创建一个数组,然后使用 implode 将它们连接起来

$query_array = array();
$queries_stringed = '';

if(strlen($location) > 0){
    $query_array[] = "location ='{$location}'";
};
if(strlen($minprice) > 0 && strlen($maxprice) > 0){
    $query_array[] = "(price BETWEEN '$minprice' AND '$maxprice')";
};
if(!empty($query_array)){
    $queries_stringed = "WHERE ".implode(" AND ", $query_array);
};

$result = mysql_query("SELECT * FROM room_tb $queries_stringed");

关于php - 如何优化mysql中的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18267077/

相关文章:

mysql - 如何将整个 MySQL 数据库字符集和排序规则转换为 UTF-8?

php - xajax 调用后启动 session

php - 如何在 PHP Codeigniter 框架中创建错误日志

php - 如何使用脚本(PHP 等)在 mySQL 上创建数据库

mysql - 如何将数组列表分配给特定数据?

MySQL - 从字符串中提取整数的最佳方法

php - Laravel "SQLSTATE[HY000]: General error: 1364 Field ' 登录'没有默认值...”

javascript - 如何启用禁用的选择选项?

php - 生成 100 个 10 位随机数并保存到数据库

Sequelize ORM 中的 MySQL View 支持