Php 无法从数据库检索数据,错误为“;正在尝试获取属性num“非对象的行”;

Php 无法从数据库检索数据,错误为“;正在尝试获取属性num“非对象的行”;,php,html,sql,Php,Html,Sql,我正在进行一个项目,从数据库中检索登录详细信息以验证用户 但是,我无法获取身份验证部分,即使用户名和密码在数据库中,检索它们时也会出现问题。此外,我还遇到了错误“尝试获取非对象的属性num_行”。请告知什么是非实物 提前谢谢你 下面是我的代码片段: <?php //login.php include "dbconnect.php"; session_start(); if (isset($_POST['username']) && isset($_POST['pa

我正在进行一个项目,从数据库中检索登录详细信息以验证用户

但是,我无法获取身份验证部分,即使用户名和密码在数据库中,检索它们时也会出现问题。此外,我还遇到了错误“尝试获取非对象的属性num_行”。请告知什么是非实物

提前谢谢你

下面是我的代码片段:

    <?php //login.php
include "dbconnect.php";
session_start();

if (isset($_POST['username']) && isset($_POST['password']))
{
  // if the user has just tried to log in
  $username = $_POST['username'];
  $password = $_POST['password'];

$password = md5($password);
  $query = 'select * from users'
           ."where username='$username' "
           ." and password='$password'";

//echo "<br>" .$query. "<br>";
  $result = $dbcnx->query($query);
  if ($result->num_rows >0 )
  {
    // if they are in the database register the user id
    $_SESSION['valid_user'] = $username;
  }


  $dbcnx->close();
}
?>



您提到的试图获取非对象的属性num\u行的
错误与
$result
未收到正确的查询结果有关。您可以
echo$result查看有什么。可能为空或null

假设
$dbcnx
存在并且是正确的,我注意到的唯一错误是您的查询字符串在第二行缺少空格,这将创建无效的SQL查询。应该是这样的:

$query = 'select * from users'
       ." where username='$username' "
       ." and password='$password'";
如果这不起作用,请将您在dbconnect.php中的代码也发布出来

注:尽管我不是PHP专家,但您可能应该寻找一种更好/更安全的身份验证方法。也许可以用一个框架或者类似的东西


PS 2:这与javascript无关,因此错误的标记:)

$result
不是对象。应该使用print\r或var\u dump代替echo$result。我建议至少过滤用户输入(因为sql注入)。谢谢你的建议!将研究另一种身份验证方法,但被教导在项目中使用此方法。我已经在问题中添加了dbconnect代码。@Nimer很好,print\u r或var\u dump会更好。我没有提到sql注入,因为有人建议更改auth方法。但是要记住这一点是有道理的。@Android\u新手您是否尝试在查询中添加空格?更改后您是否也遇到了同样的问题?我意识到问题出在sql文件上,我错误地声明了字符数!不管怎样,谢谢你的帮助!:)
$query = 'select * from users'
       ." where username='$username' "
       ." and password='$password'";