使用PHP在SQL中选择两个日期之间的行

时间:2017-03-11 19:01:20

标签: php sql

我正在尝试从两个日期之间的数据库中获取行。我已经在这里使用了其他问题来达到这一点,但我不知道如何从这里继续前进。

以下是代码,下面是输出的截图和在SQL中运行查询的照片。

提前感谢您的帮助!

-

第一段代码输出ID,名称等

<?php

$sql = "SELECT * FROM songs ";
$result = $link->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["ID"] . " - Name: " . $row["name"] . " " . $row["released"]. "<br>";
}
} else {
    echo "0 results";
}

/* close connection */    

$link->close();

?>

此部分代码输出“0结果”

<?php

$from_date = '2015-01-01';
$to_date = '2017-04-04';

$sql = "SELECT * FROM songs WHERE released BETWEEN '" . $from_date .  "' AND '" . $to_date . "' ";
$result = $link->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["ID"] . " - Name: " . $row["name"] . " " . $row["released"]. "<br>";
    }
} else {
    echo "0 results";
}

/* close connection */    

$link->close();

?>

This is what the page looks like with the above code.

I've successfully selected the rows in SQL.

编辑:在将代码写入第二代码块的IF ELSE语句的问题时,我犯了一个错误。我刚刚将它更新为我在网站上实际拥有的内容。我根据解决方案没有改变任何东西,仍然没有得到要打印的行。

3 个答案:

答案 0 :(得分:0)

您的结果已列出 - 正如您从屏幕截图中看到的那样。问题:Whileelse一起没有发现。

您的上一个示例缺少},因此它说:while { } else { echo "0 results"}

echo "0 results"应该与num_rows - 检查有关,而不是与while相关。

答案 1 :(得分:0)

你做的一切都正确,除了使用while/else; 您的代码(第二部分)应如下所示:

if ($result->num_rows > 0) {

  while () {
     //print your rows
  }
} else {

  //Say that there's 0 results
}

答案 2 :(得分:0)

啊,伙计,我只需要从第一个区块中注释掉这一行:

$link->close();

如果不清楚代码块是否紧随其后,我向所有回答的人道歉。无论如何,对于有同样问题的其他人,请不要关闭连接-_-

Here's what is output when I comment out the line from the first block