Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

mysqli_num_rows PHP помогите решить

Вадим Яковлев Ученик (174), закрыт 4 года назад
LOG ERORR :____________________________________________________
mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/freebit2/public_html/guest/account.php on line 11
_______________________________________________________________

<?

if ($_POST['register_f']) {

valid_captcha();
valid_name();
valid_wallet();

db();

if (mysqli_num_rows(mysqli_query($db, "SELECT `id` FROM `users` WHERE `wallet` = '$_POST[wallet]'")))
message('Этот кошелек уже зарегистрирован');

if ($_SESSION['ref'])
$ref = $_SESSION['ref'];
else
$ref = 0;

mysqli_query($db, "INSERT INTO `users` VALUES('', $ref, '$_POST[name]', '$_POST[wallet]', 0, '$_SERVER[REMOTE_ADDR]', 0, 0, 0)");

message('Регистрация завершена');
}

else if ($_POST['login_f']) {

valid_captcha();
valid_wallet();
db();

$query = mysqli_query($db, "SELECT * FROM `users` WHERE `wallet` = '$_POST[wallet]'");

if (!mysqli_num_rows($query))
message('Аккаунт не найден');

$row = mysqli_fetch_assoc($query);

if ($row['protect'] == 1 and $row['ip'] != $_SERVER['REMOTE_ADDR'])
message('Доступ с этого IP запрещен');
else if ($row['ban'] == 1)
message('Аккаунт заблокирован');

foreach ($row as $key => $val)
$_SESSION[$key] = $val;

$refq = mysqli_query($db, "SELECT `name`, `balance` FROM `users` WHERE `ref` = $_SESSION[id] ORDER BY `id` DESC LIMIT 10");

if (mysqli_num_rows($refq)) {
while ($refr = mysqli_fetch_assoc($refq))
$_SESSION['reflist'][] = array($refr['name'], $refr['balance']);
}

go('profile');

}

else if ($_POST['bonus_f'])
message('Для получения бонуса пройдите регистрацию');

?>
Лучший ответ
Николай Захаров Мыслитель (6266) 4 года назад
А где $db?))
Вадим ЯковлевУченик (174) 4 года назад
Николай учу PHP
что не так скажи!?
что исправить
Вадим ЯковлевУченик (174) 4 года назад
я уже запарился уже совсем перестал понимать что к чему ничего не выходит
Николай Захаров Мыслитель (6266) Ну смотри, когда используешь mysqli, тебе надо сначала писать к какому подключению ты обращаешься (у тебя - $db). Вот, например, у тебя написано: mysqli_num_rows(mysqli_query($db, .. А надо вот так: mysqli_num_rows($db, mysqli_query($db, ..
Остальные ответы
www www Искусственный Интеллект (123068) 4 года назад
Хотелось бы понимать что происходит в db();
и откуда берется дескриптор БД $db
(кстати, вы ошибки из принципиальных соображений не обрабатываете? )
Вадим ЯковлевУченик (88) 4 года назад
<?
function db() {
global $db;
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$db)
exit('Ошибка подключеня к БД');
}
?>

вот что в БД
что делать сейчас не понимаю что не так как исправить помоги друг
www www Искусственный Интеллект (123068) Для начала вот тут $query = mysqli_query($db, "SELECT * FROM `users` WHERE `wallet` = '$_POST[wallet]'"); вставить проверку на ошибки... что-то не так с этим запросом. Для начала вставьте после него message("SELECT * FROM `users` WHERE `wallet` = '$_POST[wallet]'"); хоть посмотрите на текст запроса.
Андрей Высший разум (425688) 4 года назад
Надо ВСЕГДА проверять, что mysqli_query выполнилась БЕЗ ошибок. Примерно так:

$query = mysqli_query($db, "SELECT * FROM `users` WHERE `wallet` = '$_POST[wallet]'");
if ($query === false) {
var_dump(mysqli_error($db));
exit;
}
if (!mysqli_num_rows($query)) {
...
Николай ЗахаровМыслитель (6266) 4 года назад
А что будет, если не проверять?
Андрей Высший разум (425688) Будет mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/freebit2/public_html/guest/account.php on line 11 Это сообщение появилось потому, что в MySQL (не в PHP, а именно в базе данных) запрос завершился ОШИБКОЙ. И чтобы узнать ПРИЧИНУ этой ошибки, надо вызывать mysqli_error.
DD Мастер (1632) 4 года назад
могу помочь пиши свой E-mail
Похожие вопросы