如何修复我的查询代码,使其使用日期和时间搜索数据库,但日期是函数中的变量?我是 PHP 和 SQL 的新手,不知道圆点 (.
) 和引号 (""''
) 是如何工作的。我该如何修复这段代码?
WHERE Fixture.date => '$FixtureDate 00:00:00' AND Fixture.date =< '$FixtureDate 23:59:59'
请看下面的代码
function FSearchDate($FixtureDate) {
try {
$conn = new PDO("mysql:host=" . $GLOBALS['servername'] . ";dbname=DATABASE_NAME", $GLOBALS['username'], $GLOBALS['password']);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$statement = $conn->query("
SELECT Fixtures.fixtureid AS FixtureID,
Fixtures.date AS Date,
Fixtures.week AS Week,
Fixtures.home_team AS HomeTeam,
Fixtures.away_team AS AwayTeam,
FixtureScores.home_team AS HomeScore,
FixtureScores.away_team AS AwayScore
FROM Fixtures
INNER JOIN FixtureScores ON Fixtures.fixtureid=FixtureScores.fixtureid
WHERE Fixture.date => '$FixtureDate 00:00:00' AND Fixture.date =< '$FixtureDate 23:59:59'"
);
$result = $statement->fetch();
if ($result == null) { // Fixture ID Doesn't Exist
echo '<script type="text/javascript">alert("The Fixture ID entered is not valid. Please enter a valid Fixture ID");</script>';
} else {
$GLOBALS['FixtureID'] = $result[0];
$GLOBALS['FixtureDate'] = $result[1];
$GLOBALS['FixtureWeek'] = $result[2];
$GLOBALS['FixtureHomeTeamName'] = $result[3];
$GLOBALS['FixtureAwayTeamName'] = $result[4];
$GLOBALS['FixtureHomeTeamScore'] = $result[5];
$GLOBALS['FixtureAwayTeamScore'] = $result[6];
}
}
catch(PDOException $e) {
echo "An problem occured: " . $e->getMessage();
}
$conn = null;
}
最佳答案
您的查询是错误的:
WHERE Fixture.date => '$FixtureDate 00:00:00' AND Fixture.date =< '$FixtureDate 23:59:59'"
您正在尝试使用 =>
和 =<
这不符合您的预期。
=>
是关联数组的分隔符。
那些应该读作 >=
和 <=
分别表示“大于或等于”和“小于或等于”。
注意: =<
不存在且不是有效的运算符/分隔符。
大声说出来:“小于或等于”。我们从不说“等于或小于”。
此外,您可能此处为 FSearchDate()
设置了一个变量范围方法,您可能必须将数据库连接传递到该方法。然而,情况可能并非如此。
关于php - 如何使用 PHP 函数中的日期和时间查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47351996/