我有一个网站,我正在为一个客户,其中用户可以搜索优惠券,搜索是有效的,但即使我有一个日期说明在那里,并检查优惠券是否有效,所有的优惠券餐厅显示…我搞不懂这件事。下面是我的问题:
include('includes/insert_saved_coup.php');
include('includes/connection.php');
global $con;
if(isset($_SESSION['user_id'])) {
if(isset($_POST['search_sub'])) {
$term = mysqli_real_escape_string($con,$_POST['term']);
$get_rest = "SELECT *
FROM menu_restaurants";
$run_rest = mysqli_query($con,$get_rest);
$row_rest = mysqli_fetch_array($run_rest);
$get_results = "SELECT *
FROM menu_coupons
WHERE coupon_expire > CURDATE()
AND coupon_desc LIKE '%".$term."%'
OR coupon_rest LIKE '%".$term."%'
OR coupon_title LIKE '%".$term."%'
OR coupon_amount LIKE '%".$term."%'
OR coupon_tag_one LIKE '%".$term."%'
OR coupon_tag_two LIKE '%".$term."%'
OR coupon_city LIKE '%".$term."%'
OR coupon_state LIKE '%".$term."%'
AND coupon_status = 'active'";
$run_results = mysqli_query($con,$get_results);
while($row_results = mysqli_fetch_array($run_results)) {coupon_expire字段是日期字段,而coupon_status字段是可变字符...我有一个cron每天运行在我的phpmyadmin更新状态字段,以显示已过期...但是,当运行搜索时,它将显示该餐厅/城市/术语的所有优惠券,即使该优惠券已过期或处于活动状态。
有什么想法吗?(我有一种感觉,我的问题就是这样)
发布于 2016-01-01 05:14:30
问题是您混合了AND / OR条件,而AND比OR具有更高的优先级。尝试使用圆括号将WHERE条件块括起来,如下所示
SELECT *
FROM menu_coupons
WHERE coupon_expire > CURDATE()
AND coupon_status = 'active'
AND ( coupon_desc LIKE '%".$term."%'
OR coupon_rest LIKE '%".$term."%'
OR coupon_title LIKE '%".$term."%'
OR coupon_amount LIKE '%".$term."%'
OR coupon_tag_one LIKE '%".$term."%'
OR coupon_tag_two LIKE '%".$term."%'
OR coupon_city LIKE '%".$term."%'
OR coupon_state LIKE '%".$term."%' );https://stackoverflow.com/questions/34551575
复制相似问题