警告:mysql_num_rows()期望参数1是资源,布尔给定/查询返回false

时间:2015-12-03 19:37:00

标签: php mysql mysqli

当我测试它时,它一直告诉我:

enter image description here

我有一些想法,为什么它不能正常工作,但我不会犯这个错误!

我的代码:

<?php

session_start();
if(!$_SESSION)
{
 if($_POST)
 {
 if(isset($_POST['button']) && $_POST['username'] && $_POST['password'])
{
    $db = "datenbank";

    $connection = mysqli_connect("localhost", "root", "");

    $username = mysqli_real_escape_string($connection, $_POST['username']);
    $password = mysqli_real_escape_string($connection, $_POST['password']);



    if($connection)
    {
        $selection = mysqli_select_db($connection,$db) ;

        if($selection)
        {
          $query = "SELECT * ALL FROM 'main' WHERE username ='$username' AND password = '$password'";
          $mysql_query = mysqli_query($connection, $query);

          $checkuser = mysql_num_rows($mysql_query);

          if($checkuser)
          {


              $_SESSION['username'] = $username;
  ?>
  <script type="text/javascript">
  alert("Succesfully logged in!");
   window.location.href = "myaccount.php";

 </script>


  <?php

          }
          else
          {

            echo "This user does not exist!"  ;
          }

          }
        }

    }
}

else
{
 echo "Please fill out all the fields!";    
}

}

 else

  {
  ?>
  <script type="text/javascript">
    alert("Already logged in!");
   window.location.href = "myaccount.php";

  </script>
 <?php
}

?>

我的数据库的名称是&#34; datenbank&#34;

并且该表被称为&#34; main&#34;。

2 个答案:

答案 0 :(得分:2)

每当出现此错误时,原因都是SQL无效。如果查询本身失败,则mysqli_query()会返回false,请参阅http://php.net/manual/en/mysqli.query.php

在这种情况下:

  • SELECT * ALL可能不是正确的SQL。应该是SELECT * FROM...
  • 摆脱mysql_并转到mysqli_ - 正如您已经在使用mysqli_query()

另一个提示是自己发现这样的错误:echo $query;就在$mysql_query...行之上。这将打印您实际的SQL。然后在phpMyAdmin中运行此SQL以查看它是否有效。

答案 1 :(得分:0)

从查询中删除ALL。只有*才能完成工作。