使用php从mysql数据库中获取数据

时间:2014-09-14 23:32:19

标签: php mysqli

我刚刚创建了一个页面,可以使用他们的学校名称获取2所学校的学生姓名(这仅适用于我的练习)。但是,当我执行以下代码时,我不会得到每个学校名列前茅的顶尖学生的名字,但我得到了其余的名单。

<?php
require 'connect.php';

if(isset($_GET['school']))
{
    $school = trim($_GET['school']);
    $people = $db->prepare("SELECT id, name FROM users WHERE school = ? ");
    $people->bind_param('s', $school);
    $people->execute();
    $people->bind_result($id, $name);

    if(!$people->fetch())
    {
        echo "Invalid School Name!!";       
    }   
    else
    {
        while($people->fetch())
        {
            echo 'ID. ',$id, ' ',$name,'<br>';
        }
    }
}
?>

当我使用if和else语句输出错误消息&#34;无效的学校名称!!&#34;时,才会出现此问题。如果我只是使用while循环来获取数据,我会得到完整的列表。请告诉我为什么我会错过这个名字和解决方案。谢谢。

2 个答案:

答案 0 :(得分:2)

您的第一次测试$people->fetch()。如果答案不是假,那么它再次执行并在循环中执行代码,直到最后一个元素。所以你的if是问题,因为它在测试时传递了第一个元素。

要解决此问题,只需删除if条件:如果查询找不到任何人,

while( $people->fetch() ) {
 Do_something(); }

...将被跳过,一切都会按预期工作。

要添加错误消息,请使用try / catch或使用布尔值检查是否进入循环(可能还有其他方法)。

答案 1 :(得分:0)

根据结果更改条件以进行测试

$people->execute();
$people->store_result();
$people->bind_result($id, $name);

if($people->num_rows == 0)
{
    echo "Invalid School Name!!";       
}   
else
{
    while($people->fetch())
    {
        echo 'ID. ',$id, ' ',$name,'<br>';
    }
}