您的SQL语法有误;检查与您的手册相对应的手册

时间:2019-05-05 18:24:52

标签: mysql

string(10)“ 20,999,999”您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以在第11行的“ 999,999”附近使用正确的语法

我要在数据库中搜索一个字符串,并检索所有低于给定数字的值。

在我的数据库中,该字段是VARCHAR(45)。它可以与其他领域的平方英尺完美配合。

我已经尝试过复制它,使其类似于我所拥有的平方英尺解决方案,但无济于事。

    $sql = "SELECT address.address AS address, 
address.price AS price, 
county.county AS county,
type.type AS type,
address.idaddress AS idaddress, address.feet AS feet
FROM address
JOIN county
    ON address.county_idcounty = county.idcounty
JOIN type
    ON address.type_idtype = type.idtype
WHERE 1=1";

var_dump($_GET["prices"]);


if( isset($_GET["address"]) && !empty($_GET["address"]) ) {
    var_dump($_GET["address"]);
    $sql = $sql . " AND address.address LIKE '%" . $_GET["address"] . "%'";
}

if( isset($_GET["location"]) && !empty($_GET["location"]) ) {
    $sql = $sql . " AND county.idcounty =" . $_GET["location"];
}

if( isset($_GET["property"]) && !empty($_GET["property"]) ) {
    $sql = $sql .  " AND type.idtype =" . $_GET["property"];
}

if( isset($_GET["prices"]) && !empty($_GET["prices"]) ) {
    $sql = $sql .  " AND address.price <=" . $_GET["prices"];
}

if( isset($_GET["feet"]) && !empty($_GET["feet"]) ) {
    $sql = $sql .  " AND address.feet <=" . $_GET["feet"];

英尺是平方英尺,效果很好……我希望能够搜索所有低于20,999,999的价格。

如果您需要更多信息,请告诉我。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您的栏位价格是varchar,则相关的位置必须放在单引号中

  $sql = $sql .  " AND address.price <='" . $_GET["prices"] . "'"; 

无论如何,您都不应该在SQL中使用php var,否则您就有可能进行sql注入(您应该查看准备好的语句和绑定参数)