php - 我的 PHP 页面上的 SQL 中的 Find 方法找到所有内容,即使记录为空

标签 php mysql

好的,所以我写了一些代码来在测试数据库中查找记录,如果有记录它就会工作并显示数据,如果没有记录它仍然说它找到了东西。应该说没有。它甚至可以找到不在数据库中但显然没有数据可显示的内容,这很烦人。 我需要一双新眼睛。

我认为错误在这里:

$sql = "SELECT * FROM Kittenzz
        WHERE KittenID='".$_POST['KittenID']."';";
$result = mysql_query($sql, $connection);

但为了以防万一,这里是完整代码减去了数据库的登录凭据。

<?php
if(isset($_POST['Find'])) 
{
            $connection = mysql_connect("Login Info Deleted");

            // Check connection
            if (!$connection)
        {
            echo "Connection failed: " . mysql_connect_error();
        }
            else
            { //else 1 
                //select a database
                $dbName="Katz";
                $db_selected = mysql_select_db($dbName, $connection); 

                //confirm connection to database
                if (!$db_selected)
                {
                    die ('Can\'t use $dbName : ' . mysql_error());
                }

                else
                { //else 2
            if ($_POST[KittenID]=='')
                    {   
                        $OutputMessage = 'Must add a Kitten-ID';
                    }                       
            else

            {//exception else

                    $sql = "SELECT * FROM Kittenzz
                            WHERE KittenID='".$_POST['KittenID']."';";
                    $result = mysql_query($sql, $connection);

                    while($row = mysql_fetch_array($result))
                    {
                    $Name = $row['Name'];
                    $KittenID = $row['KittenID'];
                    $KittenAge = $row['KittenAge'];
                    $Email = $row['Email'];
                    $Comments = $row['Comments'];
                    $Gender = $row['Gender'];
                    $Passive = $row['Passive'];
                    $Playful = $row['Playful'];
                    $Activity = $row['Activity']; 

                    }

                if ($result)
                {  
                   $OutputMessage = 'Record Found';
                   //echo "<p>Record found<p>";
                }   
                    else
                    {  
                       $OutputMessage = 'RECORD NOT FOUND';

                    }
                }//exception else
            }//else 2 end

                }//else 1 end


            mysql_close($connection);
}

?>

最佳答案

      if ($result)
      {  
       $OutputMessage = 'Record Found';
      }   

这是你的错误,这意味着如果查询成功执行(即使有 0 条记录)你说找到了记录。你应该只说如果返回的记录数大于 0。

      if (mysql_num_rows($result)>0)
      {  
       $OutputMessage = 'Record Found';
      } 

但是你的代码中更大的问题可以通过阅读来解决

How can I prevent SQL injection in PHP?

关于php - 我的 PHP 页面上的 SQL 中的 Find 方法找到所有内容,即使记录为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29228178/

相关文章:

php - 尚未为用户提供哈希器

php - 无法从数据库中选择

Mysql串联

python - 由于模型和数据库不同,无法使用 South 进行迁移

mysql master-master 数据复制一致性

php - 查询更新失败更新号码

php - 获取php中两个特定字符之间的字符串部分

php - 通过 Doctrine 连接直接调用 MySQL 函数返回 'cached' 结果

javascript - 如何遍历这个javascript对象

php - 调用未定义函数 mysql_connect() Apache + Mysql 错误