Есть несколько способов, чтобы получить количество строк, возвращаемых, наиболее распространенными из них являются для запуска COUNT(*)
в MySQL, но есть также mysqli_num_rows($result)
(не num_rows()
, как вы использовали, если вы не создали, что функция самостоятельно). mysqli_stmt_num_rows()
будет работать только тогда, когда вы используете prepare()
вместо query()
.
В ordre для использования COUNT(*)
вам нужно сначала запустить и получить запрос, а mysqli_num_rows()
- это константа, возвращаемая объектом MySQLiResult, которую вы можете использовать, если запрос не сработал.
Я изменил фрагмент кода, который вам нужно проверить, действительно ли запрос был успешно выполнен, mysqli_num_rows()
не будет работать, если запрос завершился неудачно.
$command = "SELECT player_id FROM Player WHERE player_login = '" . $login."' AND player_password= '".$password."' ";
if ($result = mysqli_query($connection, $command)) {
echo mysqli_num_rows($result);
} else {
/* Query failed */
echo "There was an error with the query: $command";
echo "<br />".mysqli_error($connect);
}
Или вы можете использовать COUNT(*)
, но тогда вам придется принести результаты первого.
$command = "SELECT player_id, COUNT(*) as cnt FROM Player WHERE player_login = '" . $login."' AND player_password= '".$password."' ";
if ($result = mysqli_query($connection, $command)) {
$row = mysqli_fetch_assoc($result);
echo $row['cnt'];
} else {
/* Query failed */
echo "There was an error with the query: $command";
echo "<br />".mysqli_error($connect);
}
Следует также отметить, что этот запрос уязвим для SQL инъекций, вы должны научиться использовать подготовленные заявления с заполнителями, чтобы защитить себя от этого. manual on prepare()
- хорошее место, чтобы начать с этого.
Вы также, кажется, хранение паролей либо простой текст, или с плохими методами (например, md5
или sha1
). PHP предлагает встроенную функцию, password_hash()
/password_verify()
, которую вы должны использовать. Если вы находитесь ниже PHP версии 5.5, эти функции не являются родными, но есть пакет совместимости, который можно использовать вместо него.
В качестве окончательного примечания, смешение объектно-ориентированного и процедурного кода будет технически работать (поскольку процедурные в действительности вызывают объектно-ориентированные), но считается плохой практикой. Если вы подключаетесь к объекту, продолжайте использовать объектно-ориентированный код.
Ссылки
счетчик попробовать(), чтобы получить нет. строк –
@RahulPawar 'count' работает с массивами. OP хочет количество строк, соответствующих запросу! –
Я думаю @RahulPawar означает функцию mysql COUNT –