MySQL中的数据检索

时间:2013-03-31 07:47:52

标签: mysql sql select

我想从年龄在一定范围内的表中检索一些数据。

实施例

年龄在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>"; 

请帮帮我。

3 个答案:

答案 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'";