【问题标题】:Filtering SQL queries with php, and html select boxes使用 php 和 html 选择框过滤 SQL 查询
【发布时间】:2012-07-11 20:43:07
【问题描述】:

我正在开发一个网站,人们可以在该网站上买卖新车或二手车。我想使用 php 和 sql 语句设置一个简单的过滤器,当然还有 html 选择框(下拉选项)。我已经获得了所有其他选择来帮助工作,相信我,我非常感激。然而,我一直试图让“价格过滤器”发挥作用,却一无所获。下面是我在 html 中的选择框的样子。

<select name="price" size="0">
<option value="100000">Under $100,000</option>
<option value="<?php echo " BETWEEN '100000' AND '250000' "?>">Between $100,000 and $250,000</option>
<option value=">250000<500000">Between $250,000 and $500,000</option>
<option value=">500000<750000">Between $500, 000 and $750,000</option>
<option value=">7500000">Over $750,000</option>
</select>

这是我对价格变量的 $_POST 语句:

$price = mysql_real_escape_string($_POST['price']);

这是我的sql语句:

$sql = sprintf("SELECT * FROM  `chjadb_vehicles` WHERE  `v_make` LIKE  '$make'AND `v_year` =  '$year'AND  `v_trans` LIKE  '$trans'AND  `condition` LIKE  '$cond' AND `b_style` LIKE '$b_style' AND `v_price` '$price'");

之后我有一个应该打印结果的基本循环。现在根据我的理解(正确与否),当用户从下拉菜单中选择特定选项时,“选项值”中的值将传递给 $_POST 语句。之后,它应该将 $price 替换为 BETWEEN '100000' AND '250000' 之间的实际文本,从而完成查询语句。所以从sql语句中打印出来的最终语句应该是:

"SELECT * FROM  `chjadb_vehicles` WHERE  `v_make` LIKE  '$make'AND  `v_year` =  '$year'AND  `v_trans` LIKE  '$trans'AND  `condition` LIKE  '$cond' AND  `b_style` LIKE '$b_style' AND `v_price` BETWEEN '100000' AND '250000'"`

但是我得到了这个错误:

BETWEEN \'100000\' AND \'250000\' 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 8 行的 '' BETWEEN \'100000\' AND \'250000\' '' 附近使用正确的语法

关于我哪里出错了有什么想法吗?谢谢

问候, D. 鲁道克

【问题讨论】:

  • 你为什么不直接使用WHERE v_price &gt;= 100000 AND v_price &lt;= 250000
  • 什么是“选择 boes”?
  • 那应该是“选择框”...对不起,错字更正...当我使用您选择的语句时,我收到以下 php 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 8 行的 ''>= 100000 AND v_price

标签: php mysql html


【解决方案1】:

行后:

$sql = sprintf("SELECT * FROM `chjadb_vehicles` WHERE `v_make` L....

放:

echo "<br><br>".$sql."<br><br>";

暂且,在使用页面的时候在浏览器中查看最终的SQL查询。找出错误所在,然后删除“echo”语句。

【讨论】:

    【解决方案2】:

    我自己很新,但我认为您不需要在 BETWEEN 语句中的数字周围加上引号。我想你可以把它们拿出来。如果我错了,我相信我会得到纠正,但这是我的想法。

    【讨论】:

    • 引号不应该在那里,但我用 PHPMYADMIN 自动生成了 PHP 代码,它们包含了引号,所以我把它们留在了
    【解决方案3】:

    最后的`是错字吗?如果不是,那可能就是问题所在。

    【讨论】:

    • 是的,不知道它是如何到达那里的
    猜你喜欢
    • 2017-11-04
    • 2013-01-29
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多