Mysql 年与年之间的值范围
我对这种形式的SQL非常陌生。因此,如果这是一个明显/愚蠢的问题,我道歉 基本上,我正在写一个简单的查询,应该在一年内查找威塞克斯国王。年份存储为INT,因为我认为它无法处理低于1000AD的年份。无论如何 用户应输入他们感兴趣的年份范围,例如793-794。这是在带有两个文本框的表单中输入的 在公元786年至公元802年期间,贝奥赫特里克将成为威塞克斯的国王,但使用的是当前的中间功能,这只会让人们想起林迪斯法恩修道院被维京人纵火的事件。我还想回报的是,贝奥赫特里克此时是威塞克斯的国王 以下是我迄今为止的代码:Mysql 年与年之间的值范围,mysql,range,between,Mysql,Range,Between,我对这种形式的SQL非常陌生。因此,如果这是一个明显/愚蠢的问题,我道歉 基本上,我正在写一个简单的查询,应该在一年内查找威塞克斯国王。年份存储为INT,因为我认为它无法处理低于1000AD的年份。无论如何 用户应输入他们感兴趣的年份范围,例如793-794。这是在带有两个文本框的表单中输入的 在公元786年至公元802年期间,贝奥赫特里克将成为威塞克斯的国王,但使用的是当前的中间功能,这只会让人们想起林迪斯法恩修道院被维京人纵火的事件。我还想回报的是,贝奥赫特里克此时是威塞克斯的国王 以下是我
<?php
$con = mysql_connect("");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("magorumc_authentibase", $con);
$result = mysql_query("SELECT * FROM exportinfomod
WHERE date_s BETWEEN ".mysql_real_escape_string($_GET['searchs'])."
AND ".mysql_real_escape_string($_GET['searchd'])."
ORDER BY date_s ASC");
echo "<b>Output Display in Table formate and php formate</b><br>";
echo "<table border='1'>
<tr>
<th>Start Date</th>
<th>End Date</th>
<th>Title</th>
<th>Text</th>
</tr>";
while ($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['date_s'] . "</td>";
echo "<td>" . $row['date_e'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['text'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
事先非常感谢
Alex您可能缺少正确的逻辑,无法按预期工作。这是范围的一个典型问题,因为它们可能远不如直观 例如,如果事件A的时间跨度为t=2到t=6,并且您想知道t=4到t=5之间发生了什么事件,那么除非您确定了正确的范围,否则您将无法找到A 正确的查询应该是:
SELECT ... WHERE date_s <= :searchd AND date_e >= :searchs
选择。。。其中date_s=:搜索
这假定
:searchd
是范围的结束,而:searchs
是范围的开始。在长格式中,这意味着“查找事件在范围结束之前开始,在范围开始之后结束的所有事件”。我相信这会起作用,就像在人为的示例中,6>=5
和2您不应该在新应用程序中使用mysql\u query
。这个接口是过时的、危险的,将在PHP的未来版本中删除。为了使您的代码经得起未来的考验,您应该使用以下内容。虽然在每个变量上调用mysql\u real\u escape\u string
是件好事,但使用它要容易得多。