*我有这个连接数据库的代码(vtiger_leadscf),它从中获取数据。我想要获得的唯一数据是当数据库中的日期等于当前日期时。我的代码似乎不起作用*
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "cvgcrm";
$today = date("Y-m-d");
$today_time = strtotime($today);
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT fname, date, lname FROM vtiger_leadscf where date = &today_time ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "Name: " . $row["fname"]. "" . $row["date"]. " " . $row["lname"]. " <br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
答案 0 :(得分:4)
这where date = &today_time
显然是不正确的,我希望这不是一个错字。
&
离键盘上的$
非常远。 &
应该是$
,它是variable。
where date = $today_time
现在,如果那里的值是一个字符串,则需要引用它。
where date = '$today_time'
不这样做,MySQL肯定会抱怨它。
但是,在测试了部分代码之后,它返回1431475200
,是一个整数。因此,您可能不需要引用它,但请确保您的date
列是int
类型。否则,您需要引用变量。
执行$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
会触发关于&today_time
的语法错误。
如果您想使用日期/时间,最好使用MySQL的日期时间功能。
否则,您可能会在以后查询时结束更多工作。
CURDATE()
相当于您现在使用的内容,使用起来更有效。将当前日期作为'YYYY-MM-DD'或 YYYYMMDD 格式的值返回,具体取决于函数是在字符串还是数字上下文中使用。
NOW()
也是您可以使用的另一项功能。以'YYYY-MM-DD HH:MM:SS'或 YYYYMMDDHHMMSS.uuuuuu 格式返回当前日期和时间值,具体取决于函数是否用于字符串或数字上下文中。该值以当前时区表示。
如果您的date
列属于DATE
类型,则只需使用$today = date("Y-m-d");
。
然后,您需要引用$today
变量。
where date = '$today'
使用$today_time = strtotime($today);
会将2015-05-13
转换为1431475200
,因此我怀疑这是您想要使用的内容。只有您知道date
列的类型。
来自手册https://dev.mysql.com/doc/refman/5.0/en/datetime.html
DATE类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围是'1000-01-01'到'9999-12-31'。