执行语句后的空页面

时间:2013-11-06 16:56:24

标签: php mysql

我编写了一个从数据库中输出动物名称的程序。但是,当我找不到合适的值(数据库中没有的值)时,我的程序无法执行该程序的问题< / p>

<?php
$host='localhost';
$user='root';
$password='root';
$dbname='pet';
$connect=mysqli_connect($host,$user,$password,$dbname) or die("can not connect to server");

if(@$_GET['data']=='yes')
{
    $animalName=trim($_POST['animal']);
    $query="SELECT name FROM display WHERE name='$animalName'";
    $result=mysqli_query($connect,$query) or die("can not execute query");
    while($row=mysqli_fetch_assoc($result))
    {
        extract($row);
        if(!$name==$animalName)
        {
            echo "not found";
        }
        else
        {
            echo "Hello $name. Have a nice day.";
        }
    }

}
else
{
        echo "<form action='$_SERVER[PHP_SELF]?data=yes' method='POST'>
            <h4>type an animal name in the box below and press enter</h4>
            <p><input type='text' name='animal' maxlength='20'></p>
            <p><input type='submit' value='submit'></p>
            </form>";
}
?>

当我输入数据库中不存在的动物时,我的代码无法执行此块(它转到空白页面)

if(!$name==$animalName)
            {
                echo "not found";
            }

有没有解决方案。

4 个答案:

答案 0 :(得分:4)

如果您没有从数据库中获取结果集中的任何行,则while循环中的代码将永远不会执行。

您可能需要做的是在尝试进入while循环之前检查结果集中的行数。如果你有0行,只需发出消息,不要试图在while循环中“获取”数据库中的任何结果。

答案 1 :(得分:3)

在while循环

之前使用mysqli_num_rows()
<?php
$host     = 'localhost';
$user     = 'root';
$password = 'root';
$dbname   = 'pet';
$connect = mysqli_connect($host, $user, $password, $dbname) or die("can not connect to server");

if (@$_GET['data'] == 'yes') {
    $animalName = trim($_POST['animal']);
    $query      = "SELECT name FROM display WHERE name='$animalName'";
    $result = mysqli_query($connect, $query) or die("can not execute query");
    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
            extract($row);
            if (!$name == $animalName) {
                echo "not found";
            } else {
                echo "Hello $name. Have a nice day.";
            }
        }
    } else
        echo "data not found";

} else {
    echo "<form action='$_SERVER[PHP_SELF]?data=yes' method='POST'>
                    <h4>type an animal name in the box below and press enter</h4>
                    <p><input type='text' name='animal' maxlength='20'></p>
                    <p><input type='submit' value='submit'></p>
                    </form>";
}
?> 

答案 2 :(得分:1)

试试这个:

if ($name != $animalName) {

您的查询也容易受到SQL注入攻击。

答案 3 :(得分:0)

由于db中没有动物,当SELECT失败时,您错过了对mysql_query()返回没有行的检查。在$ result = mysqli_query($ connect,$ query)语句后添加以下内容:

$result = mysqli_query($connect,$query);
if (mysql_num_rows($result) == 0) {
       echo "not found";
}