【问题标题】:PHP - MYSQL: Does not recognize data in tablePHP - MYSQL:不识别表中的数据
【发布时间】:2016-12-14 15:43:03
【问题描述】:

这是我的登录系统代码。我有一个名为 Users2 的表,其中包含以下列:userID、prenume、nume、nicknamee、parola(即密码)和 tara。 我想要做的是: 用户输入他的用户名和密码。点击提交,点击提交后,如果他已连接,他会收到消息

<form method="post">
Username: 
<input type="text" name="nicknameee" placeholder="Username">
<br> 
Password: 
<input type="password" name="passwordd" placeholder="Password">
<br> 
<input type="submit" name="Submit2" value="submit"> 
<br>
<?php 
if (isset($_POST['Submit2'])) { 

    $result1 = $conn->query("SELECT nicknamee, parola FROM Users2 WHERE nicknamee='$_POST[nicknameee]' AND parola='$_POST[passwordd]' ");

    if (mysql_num_rows($result1)>0){
        echo "We are connected";
    }
    else{
        echo "INCORRECT";
    }

 } 
?>
</form>

问题是我明白了:

(用户名和密码表单+提交按钮)然后: 警告:mysql_num_rows() 期望参数 1 是资源,对象在第 30 行的 /home/u381189183/public_html/login.php 中给出 不正确

【问题讨论】:

  • 你的代码对sql注入开放,考虑查看mysqli和prepared statements
  • 永远不要在数据库中以明文形式存储密码!! OMG,人们还在这样做吗?使用像php的password_hash()这样的散列机制!
  • 我大约一周前开始使用 php.. 感谢您提供的信息

标签: php mysql


【解决方案1】:

因为查询返回的结果是object 而不是资源,在这种情况下您必须使用$result1-&gt;num_rows

if (isset($_POST['Submit2'])) { 

    $result1 = $conn->query("SELECT nicknamee, parola FROM Users2 WHERE nicknamee='$_POST[nicknameee]' AND parola='$_POST[passwordd]' ");

    if ($result1->num_rows > 0){
        echo "We are connected";
    }
    else{
        echo "INCORRECT";
    }

 } 

您还应该至少切换到mysqli。也许PDO。并使用准备好的语句。

【讨论】:

  • @OP 结合了过程和面向对象的编程。 (只是为了澄清为什么使用 num_rows 而不是 mysql_num_rows)
  • 因为查询返回的结果是object而不是资源。
  • 好的,到目前为止一切顺利。所以它有效,谢谢。但现在我想在 if 语句中将用户重定向到 link.ext/loggedin.php。我怎么做?是html命令还是php命令?
  • 我指的是这个
  • if ($result1->num_rows > 0){ session_start(); $_SESSION["isLoggedIn"] = 1; // 重定向到 link.link/loggedin.php }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 2015-11-10
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
相关资源
最近更新 更多