false时,搜索框无法识别变量

时间:2015-02-06 19:01:25

标签: php mysql database web

在我的搜索框中,用户可以搜索以查看项目是否在数据库中。如果输入的项目名称匹配,则代码可以正常工作。问题是他们输入的项目名称与数据库中的任何项目名称都不匹配。

        <?php $name = $_GET['search'];  
        $name = strtolower($name);
        $name = ucfirst($name) ;
        $dbQuery = $db->prepare("select * from names WHERE Item_Name = '$name'");
                $dbQuery->execute();
                while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)){

                $Item_name = $dbRow['Item_Name']; } 

         if ($Item_name == $name) { 
            echo "Name is in database"; 
            } else {
            echo "Name is not in database";
            }

            ?>

当$ Item_name与$ name匹配时,消息将成功打印。当它们不匹配时,它会显示“Undefined variable:Item_name”。我不知道为什么会这样。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:-1)

这是因为当数据库中不存在该名称时,while循环未被执行。因此,变量$Item_name不会在任何地方初始化。

您可以在$Item_name = null;循环之前添加while来解决此问题。这样,$Item_name始终被初始化。


注意:使用此代码,您很容易受到SQL injection攻击。你应该使用这样的预备语句:

$dbQuery = $db->prepare("select * from names WHERE Item_Name = ?");
$dbQuery->execute(array($name));

这样,PDO会小心处理输入,以便某些恶意输入不会丢弃您的数据库等等。