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