我需要帮助处理我正在进行的项目。 这里有一个包含2个日期的表:date1和date2(更简单)
现在我需要显示当前日期介于date1和date2之间的所有行。 到目前为止我所拥有的是:
$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date" BETWEEN date1 AND date2';
但这不起作用。虽然如果我用2017-01-06替换"$date"
它确实有效。现在我该如何解决这个问题?
提前谢谢!
答案 0 :(得分:2)
date()
上的手册清楚地说明了它的语法并使用了参数的引号。
由于你的没有,PHP假设你将它们预先定义为constants。
Error reporting会引发以下情况:
注意:使用未定义的常量Y - 在x行上的/path/to/file.php中假定为'Y' 注意:使用未定义的常量m - 在第x行的/path/to/file.php中假定为'm' 注意:使用未定义的常量d - 在第x行的/path/to/file.php中假定为'd'
示例#4中的示例date()手册格式:
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>
答案 1 :(得分:1)
您需要在date()
:
$date = date('Y-m-d');
你需要用双引号将你赋予$sql
的字符串包装起来,否则$date
变量不会被扩展。
$sql = "SELECT * FROM boekingen WHERE '$date' BETWEEN date1 AND date2";
What is the difference between single-quoted and double-quoted strings in PHP?
答案 2 :(得分:0)
使用类似的东西
$date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE STR_TO_DATE(\'$date'\', \'%m/%d/%Y\') BETWEEN date1 AND date2';
确保date2大于date1。
答案 3 :(得分:0)
date = date(Y-m-d);
$sql = 'SELECT * FROM boekingen WHERE "$date"
这是你问题的代码。
在php中使用字符串的单引号不会扩展变量。
在$date
周围使用双引号和单引号或连接例如
$sql = 'SELECT * FROM boekingen WHERE "' . $date .'"
或sprintf
$sql = sprintf('SELECT * FROM boekingen WHERE "%s", $date)