我想从表中检索一些年龄在特定范围内的数据。
示例
年龄在20岁至30岁之间的人士。我该怎么做?我尝试使用以下查询,但无法得到它。
$age="SELECT *
From rec_patient_reg
WHERE p_age >='$afrom' <= '$to'";
$result1=mysql_query($age)
or die(mysql_error());
while($result = mysql_fetch_array($result1)) {
echo "<b>Patient ID</b> = " .$result["Patient_id"] . " <br>";
echo "<b>NAME</b> = ".$result["p_fname"]."<br><br>----------------<br><br>";
请帮助我。
最佳答案
我敢打赌,由于您使用的是 mysql,因此您不会收到任何错误消息。看看下面这个例子,
SELECT *
FROM tableName
WHERE Age >= 20 <= 25
这在任何其他 RDBMS 上都是不允许的,但 MySQL 允许。它的作用是隐式允许在过滤器的最右侧使用 bool 表达式,例如
SELECT *
FROM tableName
WHERE (Age >= 20) <= 25
因此,在本例中,该值现在被解析为(假设 Age = 5)
WHERE 0 >= 25
导致您检索到意外结果。
<小时/>如果您想搜索范围,可以使用BETWEEN
,
SELECT *
From rec_patient_reg
WHERE p_age BETWEEN '$afrom' AND '$to'
作为旁注,该查询容易受到 SQL Injection
的影响。如果变量的值(s)来自外部。请查看下面的文章,了解如何预防这种情况。通过使用 PreparedStatements
,您可以摆脱在值周围使用单引号的情况。
关于mysql - MySQL 中的数据检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727478/