【问题标题】:How to write the SQL query for a search having to consider several values using php?如何使用 php 为必须考虑多个值的搜索编写 SQL 查询?
【发布时间】:2018-04-07 15:22:55
【问题描述】:

在我的页面上,我有文本框和下拉列表。 所有值都存储在数组中。 我想从数据库车辆中获取年份值。 下面是html代码。

<form name="frm_vehicles" action="processinput.php" method ="post">                                 
                                    Enter year of vehicle
                                    <input type="text" name="year[]" >


                                        <select name="choice[]">
                                            <option value="cars" selected="selected">Cars</option>
                                            <option value="lorry">Lorry</option>
                                        </select>



                                        <select name="query[]">
                                            <option value="and" selected="selected">AND</option>
                                            <option value="or">OR</option>
                                            <option value="not">NOT</option>
                                        </select>

                                    <br> 

                                    <input type="text" name="year[]">

                                    <br>
                                        <select name="choice[]">
                                            <option value="cars" selected="selected">Cars</option>
                                            <option value="lorry">Lorry</option>
                                        </select>
                                        <div id="disp"></div>
                                        <input type="button" name="addRow" onclick= "addRow()">
                                        <input type="button" type="submit" name="search" value="Search">
</form>         

单击按钮 addRow 时,将调用 javascript 函数并添加另一行。添加了以下元素。

                            <input type="text" name="year[]" >


                                <select name="choice[]">
                                    <option value="cars" selected="selected">Cars</option>
                                    <option value="lorry">Lorry</option>
                                </select>

因此,我们可以看到字段是动态添加的。

当所有字段都被选中后,输入被发送到 processinput.php 文件。 在这个文件中,写入了 SQL 语句。 应该发生的是应该根据用户的输入执行语句。 Cars 和 Lorry 是两张不同的桌子

and/or/not 用作连接。 如果选择“和”,则输入的上一年的值和之后的值应该匹配。 如果选择“或”,则只能匹配一个值。 如果选择'not',则不选择'not'之后的值。 所以需要做的是编写一个 SQL 语句来获取值并执行搜索。

例如 我添加了第三行。 我在第一个文本框中输入了 2006 并选择了表“汽车”和“和” 在第二行,我输入了年份选择表“货车”和“不” 在第三行中,我输入了表格“年份”和“汽车”

$year=$_POST['year'], $choice=$_POST['choice'], $query=$_POST['查询']

谁能指导我如何写一条sql语句。

如何在我的 sql 语句中提及 $year、$choice 和 $query? 我应该使用循环吗?

选择桌车或卡车。

汽车表;列品牌、型号、年份 丰田.nze.2006 nissan.march.2010

货车桌;列品牌、型号、年份 福特.hhh.2006 丰田.gggg.2010

【问题讨论】:

标签: php postgresql


【解决方案1】:

适用于所有 2015 款宝马、音响、奔驰

SELECT * FROM table WHERE year = 2015 AND (choice = 'ford' OR choice = 'audio' OR choice = 'mercedes benz')

使用" 并用{$variable} 插入变量以在PHP 中定义字符串。

【讨论】:

  • 您可以迭代所有的帖子字段并连接到查询字符串。这是使用 laravel 之类的框架最简单的方法。
【解决方案2】:

您需要使用循环构建 WHERE 子句。我建议您查看绑定值以防止 SQL 注入。

实际上,您将需要一个执行类似

的查询
$baseQuery = "SELECT * 
FROM <table>
WHERE (`year` = $year[0] and `choice` = $choice[0])";

作为基本查询

然后您可能需要确定有多少额外的行,如果有多个,则添加到您的基本查询中,以便您可以执行类似的操作;

$additional = '';

if (count($year) > 1) {

    foreach($year as $key=>$y) {
        if($key > 0) { 
        $additional .= $query[0] . "(`year` = $year[$key] and `choice` = $choice[$key])";
       }
    }
}

如果您将其粘贴在 $baseQuery 上方,然后将 $additional 附加到基本查询;

 $additional = '';

if (count($year) > 1) {

    foreach($year as $key=>$y) { 
        if($key > 0) {
        $additional .= $query[0] . "(`year` = $year[$key] and `choice` = $choice[$key])";
        }
    }
}

$baseQuery = "SELECT * 
FROM <table>
WHERE (`year` = $year[0] and `choice` = $choice[0]) " . $additional;

【讨论】:

  • 在查询中: $baseQuery = "SELECT * FROM WHERE (year = $year[0] and choice = $choice[0]) " 。 $附加;我想你误解了我想要做的事情。桌子是汽车和卡车。 $choice 将存储从下拉列表中选择的值。那么baseQuery 语句中的
    呢?我的表格应该是下拉列表中的值之一。
  • 请在您的原始问题中提供一些示例数据。
  • 我加了其实我需要知道的是如何在sql语句中使用选择的值SELECT * FROM $table PHP变量$table可以作为SQL查询中的表名吗?
  • 要从两个单独的表中获取数据,您必须执行union 或进行单独的查询。如果你有一个带有车辆类型列的表会更简单。
  • 其实我想用这个逻辑;有两张不同的桌子,你能帮我吗?
猜你喜欢
  • 2011-02-19
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多