как я могу получить значение COUNT (id) - PullRequest
0 голосов
/ 19 апреля 2019

У меня проблема с этим объектом. Я не знаю (если это возможно), как получить значение COUNT(id).

Я пытался $req[0]->COUNT(id) but "COUNT()" он обнаружил это как функцию. Как это можно обнаружить как ключ?

Вот 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); 

Вывод запроса должен быть 0 или 1, если пользователь уже зарегистрирован или нет.

Ответы [ 4 ]

3 голосов
/ 19 апреля 2019

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

}

Примечание: -

Сохранение простого пароля - очень плохая идея.поэтому используйте хеширование пароля

Ваш текущий код широко открыт для SQL INJECTION.Чтобы предотвратить это, используйте prepared statements

mysqli :: prepare

PDO :: prepare

Я сделаю это примерно так: https://3v4l.org/YOBGX

0 голосов
/ 19 апреля 2019

Попробуйте это -

 $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);
0 голосов
/ 19 апреля 2019

Вот решение, для которого вы не привязали ключ, см. Ниже

 $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); 
0 голосов
/ 19 апреля 2019

Здесь требуется псевдоним, иначе он не будет захватывать значение счетчика так, как вы хотите.

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


var_dump($req); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...