Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php/mysql中的更大值_Php_Mysql_Select - Fatal编程技术网

php/mysql中的更大值

php/mysql中的更大值,php,mysql,select,Php,Mysql,Select,我有一个搜索框,用户可以在其中搜索属性。在搜索框中有两个选择框。一个是最低价格,一个是最高价格 如果用户选择最低价格10000和最高价格1000000,查询会是什么样子 这是我的代码,但似乎不起作用: SELECT * FROM property WHERE price > '%{$_POST['pricemin']}%' AND price < '%{$_POST['pricemax']}%' 首先,切勿将用户输入的值直接放入查询中。您正在请求SQL注入攻击。第二,为什么要对数

我有一个搜索框,用户可以在其中搜索属性。在搜索框中有两个选择框。一个是最低价格,一个是最高价格

如果用户选择最低价格10000和最高价格1000000,查询会是什么样子

这是我的代码,但似乎不起作用:

 SELECT * FROM property WHERE price > '%{$_POST['pricemin']}%' AND price < '%{$_POST['pricemax']}%'

首先,切勿将用户输入的值直接放入查询中。您正在请求SQL注入攻击。第二,为什么要对数字进行%的通配符匹配

SELECT col1, col2, col3 FROM property WHERE price BETWEEN $min AND $max;

首先,切勿将用户输入的值直接放入查询中。您正在请求SQL注入攻击。第二,为什么要对数字进行%的通配符匹配

SELECT col1, col2, col3 FROM property WHERE price BETWEEN $min AND $max;

好的,首先你需要转义你的变量,所以试试这个

$pricemin = mysql_real_escape_string($_POST['pricemin']);
$pricemax = mysql_real_escape_string($_POST['pricemax']);
然后我想你错过了一个不到

SELECT * FROM property WHERE price > '$pricemin' AND price < '$pricemax'

但是,如果您正在使用带有php的数据库,因为mysql\u real\u escape\u字符串和其他mysql函数已经贬值,那么您应该查看mysqli。

好的,您需要先对变量进行转义,所以请尝试此方法

$pricemin = mysql_real_escape_string($_POST['pricemin']);
$pricemax = mysql_real_escape_string($_POST['pricemax']);
然后我想你错过了一个不到

SELECT * FROM property WHERE price > '$pricemin' AND price < '$pricemax'

但是,如果您正在使用带有php的数据库,因为mysql\u real\u escape\u string和其他mysql函数已经贬值,那么您应该查看mysql。首先,除非使用LIKE,否则不能使用%value%进行比较。其次,您应该真正使用准备好的语句:

if (isset($_POST['pricemin'], $_POST['pricemax'])) {
    $stmt = $db->prepare('SELECT * FROM property WHERE price > ? AND price < ?');
    $stmt->execute(array($_POST['pricemin'], $_POST['pricemax']));
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

给出了PDO的例子;如果您没有PDO或mysqli,请开始使用它

首先,除非使用LIKE,否则不能使用%value%进行比较。其次,您应该真正使用准备好的语句:

if (isset($_POST['pricemin'], $_POST['pricemax'])) {
    $stmt = $db->prepare('SELECT * FROM property WHERE price > ? AND price < ?');
    $stmt->execute(array($_POST['pricemin'], $_POST['pricemax']));
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

给出了PDO的例子;如果您没有PDO或mysqli,请开始使用它

鲍比桌子,有人吗?如果您的参数已正确清理,您可以在此测试中使用BETWEEN。%n使用LIKE效果更好,只需确保您放置的是数字,而不是字符串。您似乎忘记了pricemax的小于。请不要在生产网站上使用类似的代码。你很快就会被SQL注入攻击。有人知道Bobby Tables吗?如果您的参数已正确清理,您可以在此测试中使用BETWEEN。%n使用LIKE效果更好,只需确保您放置的是数字,而不是字符串。您似乎忘记了pricemax的小于。请不要在生产网站上使用类似的代码。你会很快被SQL注入攻击。你要求SQL注入攻击+1我正在使用一个名为db_escape的函数,所以这不是问题。你要求SQL注入攻击+1我正在使用一个名为db_escape的函数,所以这不是问题。