【问题标题】:how can i get the value of COUNT(id)我怎样才能得到 COUNT(id) 的值
【发布时间】:2019-04-19 11:58:29
【问题描述】:

我遇到了这个对象的问题。我不知道(如果可能的话),如何获取COUNT(id) 的值。

我试过$req[0]->COUNT(id) but "COUNT()" 它检测到它是一个函数。怎么会被检测为key呢?

这是一个 var_dump($req):

object(stdClass)[4]
public 'COUNT(id)' => string '1' (length=1)

PHP

$req = $db->query('SELECT COUNT(id) FROM `users` WHERE username ="'.$username.'" AND password = "'.$password.'"');

if($req == 1){
 $_SESSION['authentificated'] = true;
 $_SESSION['username'] = $username;
}

var_dump($req); 

如果用户已经注册,查询的输出应该是01

【问题讨论】:

标签: php mysql object


【解决方案1】:

1.您需要为COUNT()添加别名

2.查询执行后需要获取记录进行比较

像下面这样:-

$req = $db->query('SELECT COUNT(id) as count FROM `users` WHERE username ="'.$username.'" AND password = "'.$password.'"');

$result = mysqli_fetch_assoc($req); // sample example,you need to change accordingly
if($result['count'] == 1){
  //your code

}

注意:-

保存纯密码是一个非常糟糕的主意。所以使用password hashing

您当前的代码对 SQL INJECTION 是开放的。为了防止它使用prepared statements

mysqli::prepare

PDO::prepare

我会这样做: https://3v4l.org/YOBGX

【讨论】:

    【解决方案2】:

    此处需要别名,否则它将无法按照您想要的方式捕获该计数值。

    $req = $db->query('SELECT COUNT(id) cnt FROM `users` WHERE username ="'.$username.'" AND password = "'.$password.'"');
    
    
    var_dump($req); 
    

    【讨论】:

      【解决方案3】:

      这里是你没有绑定密钥的解决方法,请看下面

       $req = $db->query('SELECT COUNT(id) as user_exists FROM `users` WHERE username 
      ="'.$username.'" AND password = "'.$password.'"');
      
      if($req == 1){
          $_SESSION['authentificated'] = true;
          $_SESSION['username'] = $username;
      }
      
      var_dump($req); 
      

      【讨论】:

        【解决方案4】:

        试试这个——

         $req = mysqli_query($db,'SELECT (COUNT(id)) as countID FROM `users` WHERE username ="'.$username.'" AND password = "'.$password.'"'));
                $row = mysqli_fetch_array($req);
                $countID = $row['countID'];
                if($countID == 1){
                 $_SESSION['authentificated'] = true;
                 $_SESSION['username'] = $username;
                }
        
                var_dump($req);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-16
          • 2011-04-11
          • 1970-01-01
          • 2021-07-10
          • 2011-06-04
          • 2012-04-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多