代码之家  ›  专栏  ›  技术社区  ›  johnDoe

从MYSQL-PHP的一系列日期中获取记录

  •  1
  • johnDoe  · 技术社区  · 6 年前

    我在下面有一个MYSQL表,我正在尝试检索特定日期之间的记录数。

    我得到以下错误:

    '尝试在/var/www/html/dev/timeTest.php的第18行获取非对象的'num_rows'属性'

    MySQL表的日期列:

    enter image description here

    菲律宾比索:

     $date1 = '2018-07-01';
     $date2 = '2018-07-30';
    
     $sql = "SELECT * FROM scanUploads WHERE dateUpload BETWEEN {$date1} AND {$date2}";
     $result = $mysqli -> query($sql);
     $count = $result -> num_rows; // LINE 18
     echo 'records: '.$count;
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Martin Zeitler    6 年前

    你缺少引号,这会破坏语法。

    我也觉得花括号很奇怪。

    有两种方法可以表示它,或者用 ' 或与 " :

    $sql = 'SELECT * FROM scanUploads WHERE dateUpload BETWEEN "'.$date1.'" AND "'.$date2.'"';
    $sql = "SELECT * FROM scanUploads WHERE dateUpload BETWEEN \"$date1\" AND \"$date2\"";
    
    // whenever wondering about the validity of generated SQL:
    // die($sql);
    
    // and whenever wondering about the result-set returned:
    // die(print_r($result, true));
    

    转义双引号 \" 将始终按字面意思对待,但仅限于 " " 双引号。

        2
  •  2
  •   Kishan    6 年前
    $date1 = '2018-07-01';
     $date1 = '2018-07-30';
    
     $sql = "SELECT * FROM scanUploads WHERE 
    DATE_FORMAT(dateUpload,'%Y-%m-%d') >= '".$date1."' AND DATE_FORMAT(dateUpload,'%Y-%m-%d') <= '".$date2."' ";
     $result = $mysqli -> query($sql);
     $count = $result -> num_rows; // LINE 18
     echo 'records: '.$count;