我想从年龄在一定范围内的表中检索一些数据。
年龄在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>";
请帮帮我。
答案 0 :(得分:1)
我打赌你没有收到任何错误消息,因为你使用的是mysql。看看下面这个例子,
SELECT *
FROM tableName
WHERE Age >= 20 <= 25
任何其他RDBMS都不允许这样做,但MySQL允许它。它的作用是暗示允许在过滤器最右侧的布尔表达式,例如
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'
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:0)
首先,不要使用mysql_*
函数,因为它们已被弃用。
您的查询应该是:
SELECT *
FROM `rec_patient_reg`
WHERE `p_age` BETWEEN '$afrom' AND '$to'
答案 2 :(得分:0)
也许是这样的?
$age = "SELECT * FROM rec_patient_reg WHERE p_age >='$afrom' AND p_age <= '$to'";