Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
比较sql日期和php日期_Php_Mysql - Fatal编程技术网

比较sql日期和php日期

比较sql日期和php日期,php,mysql,Php,Mysql,我正在尝试编写一个sql查询。在英语中,此查询翻译为 选择数据库中购买日期字段小于[日期]的所有记录。 以下是代码形式的查询: //php格式 $date=日期(“Y-m-d”); //sql查询 从购买日期的冰箱中选择食物试试以下方法: SELECT * FROM tbl1 WHERE user_id = "User1" and date_purchased < "2016-01-01"; 在某种情况下,这可能如下所示: $date_str = $date->format('Y

我正在尝试编写一个sql查询。在英语中,此查询翻译为

选择数据库中购买日期字段小于[日期]的所有记录。

以下是代码形式的查询:

//php格式
$date=日期(“Y-m-d”);
//sql查询
从购买日期的冰箱中选择食物试试以下方法:

SELECT * FROM tbl1 WHERE user_id = "User1" and date_purchased < "2016-01-01";
在某种情况下,这可能如下所示:

$date_str = $date->format('Y-m-d');
$sql_pattern = 'SELECT * FROM tbl1 WHERE user_id = "%s" and date_purchased < "%s";';
$sql = sprintf($sql_pattern, $user_name, $date_str);
$date\u str=$date->format('Y-m-d');
$sql_pattern='从tbl1中选择*,其中用户_id=“%s”和购买日期<%s”;
$sql=sprintf($sql\u模式,$user\u名称,$date\u str);

只要记住你提供的信息,一切似乎都很好

我们必须查看整个代码才能找到错误。可能是MySQL字段类型的问题,也可能是您向MySQL发送查询的方式问题

我这里有一个工作示例,其中有一个表的最小版本。我希望有帮助

冰箱表字段:

mysql> desc fridge;
+----------------+------------------+------+-----+---------+----------------+
| Field          | Type             | Null | Key | Default | Extra          |
+----------------+------------------+------+-----+---------+----------------+
| id             | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| food           | varchar(20)      | YES  |     | NULL    |                |
| date_purchased | date             | YES  |     | NULL    |                |
+----------------+------------------+------+-----+---------+----------------+
(注意
date\u purchased
字段中的
date
类型)

编辑:如果您对该字段使用
date
datetime
类型,则此示例有效

冰箱表内容:

mysql> select * from fridge;
+----+-----------+----------------+
| id | food      | date_purchased |
+----+-----------+----------------+
|  1 | hamburger | 2016-04-28     |
|  2 | pizza     | 2016-04-12     |
|  3 | salad     | 2016-05-10     |  <-- future date
|  4 | fruit     | 2016-05-04     |  <-- future date
+----+-----------+----------------+
mysql>从冰箱中选择*;
+----+-----------+----------------+
|id |食品|购买日期||
+----+-----------+----------------+
|1 |汉堡| 2016-04-28|
|2 |比萨饼| 2016-04-12|

|3 |色拉| 2016-05-10 |我也有类似的问题,我采取了以下步骤来解决:

  • 将SQL字段类型更改为datetime
  • 在php中使用
    $date=date('Y-m-dh:i:s
    );获取当前日期和时间的步骤

  • 将您的查询更新为
    从date_购买的冰箱中选择食物我遇到了同样的问题,似乎对我有效的是上述内容(PHP代码):

    $cur_dt=date('Y-m-d');
    $sql=“选择日期,来自rantevou的文本,其中用户\u id='$id';
    $result=mysqli\u查询($link,$sql);
    如果(mysqli_num_行($result)>0){
    while($row=mysqli\u fetch\u assoc($result)){
    $date=$row[“date”];
    
    如果($date),您可以添加sql查询和PHP日期格式代码吗?@nanocv请参见上文。为什么会出现这些问题?您是如何看到某些东西没有按预期工作的?
    mysql> select * from fridge;
    +----+-----------+----------------+
    | id | food      | date_purchased |
    +----+-----------+----------------+
    |  1 | hamburger | 2016-04-28     |
    |  2 | pizza     | 2016-04-12     |
    |  3 | salad     | 2016-05-10     |  <-- future date
    |  4 | fruit     | 2016-05-04     |  <-- future date
    +----+-----------+----------------+
    
    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    // prepare and bind
    $stmt = $conn->prepare("select food from fridge where date_purchased < ?");
    $stmt->bind_param("s", $date);
    
    // set parameters and execute
    $date = date("Y-m-d");  // NOTE: $date stores the current date
    echo "<p>Food with date < $date</p>";
    $stmt->execute();
    
    // bind variables to prepared statement
    $stmt->bind_result($food);
    
    // fetch values (here you can do whatever you want with results)
    while ($stmt->fetch()) {
        echo "<p>$food</p>";
    }
    
    $stmt->close();
    $conn->close();
    
    $cur_dt = date('Y-m-d');
    
              $sql = "SELECT date, text FROM rantevou WHERE user_id = '$id' ";
              $result = mysqli_query($link, $sql);
    
              if (mysqli_num_rows($result) > 0) {
    
                while($row = mysqli_fetch_assoc($result)){
                  $date = $row["date"];
                  if ($date <= $cur_dt){
                    
                  }
                  
                }
              }