X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Помощь по php, mysqli "mysqli_fetch_assoc() expects parameter"
RSST
RSST
Topic Starter сообщение 20.6.2013, 20:11; Ответить: RSST
Сообщение #1


Здравствуйте пишу потихоньку движок на mysqli часто сталкиваюсь с ошибкой такой как

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given

можете помочь исправить этот файл
заранее спасибо
Прикрепленные файлы
Прикрепленный файл  user.zip ( 1,29 килобайт ) Кол-во скачиваний: 106
 
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RSST
RSST
Topic Starter сообщение 20.6.2013, 21:07; Ответить: RSST
Сообщение #2


werd_34, поможешь ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 21.6.2013, 0:03; Ответить: isvetlichniy
Сообщение #3


ну так сам подумай, переведи ошибку
но суть вот в чем. если представить, что у тебя такая конструкция
$result = mysqli_query($link, $query);
while ($row = mysqli_fetch_assoc($result)) {
}

то твоя ошибка будет в случае, если mysqli_query не вернет результат запроса.

проверяй данные вот так

if ($result = mysqli_query($link, $query)) {
  while ($row = mysqli_fetch_assoc($result)) {
  }
}


P. S. Читай оф. документацию и будет тебе счастье
http://php.net/manual/en/mysqli-result.fetch-assoc.php
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RSST
RSST
Topic Starter сообщение 21.6.2013, 1:05; Ответить: RSST
Сообщение #4


часть кода вся проблема в 5 запросах

if (isset($_GET['login']) && isset($_GET['password']))
{
# Проверяем существование аккавунта с этими данными
if (mysqli_result(mysqli_query($db,"SELECT COUNT(*) FROM `users` WHERE `login` = '". input($_GET['login']) ."' AND `password` = '". encrypt(input($_GET['password'])) ."' LIMIT 1"), 0) == 1)
{
# Массив с данными пользователя
$user = mysqli_fetch_assoc(mysqli_query($db,"SELECT * FROM `users` WHERE `login` = '". input($_GET['login']) ."' AND `password` = '". encrypt(input($_GET['password'])) ."' LIMIT 1"));
# Создаем ID в сессии
$_SESSION['user_id'] = $user['id'];
# Записываем дату последнего посещения
mysqli_query($db,"UPDATE `users` SET `date_last_entry` = '". time() ."' WHERE `id` = '$user[id]' LIMIT 1");
// проверка наличия настроек
if (mysqli_result(mysqli_query($db,"SELECT COUNT(*) FROM `user_settings` WHERE `user_id` = '$user[id]'"), 0) == 0) mysqli_query("INSERT INTO `user_settings` SET `user_id` = '$user[id]'");
# Массив с настройками
$settings = mysqli_fetch_assoc(mysqli_query($db,"SELECT * FROM `user_settings` WHERE `user_id` = '$user[id]' LIMIT 1"));
}
else $err .= 'Неверный логин или пароль<br />';
}

isvetlichniy, читал и примеров нету нормальных
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
html-ka
html-ka
сообщение 21.6.2013, 1:53; Ответить: html-ka
Сообщение #5


ошибка на все 5 запросов, указанных выше?
это что за конструкция такая input()?
зачем кавычки в запросе?
я бы не липил все в одну строку, а разделил бы на несколько с возможной проверкой результата
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RSST
RSST
Topic Starter сообщение 21.6.2013, 4:45; Ответить: RSST
Сообщение #6


функция input

function input($var)
{
global $db; //переменная подключения к базе
return mysqli_real_escape_string($db, trim($var));
}

если не трудно можешь показать пример на моем коде то есть что разделить и как лучше сделать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 21.6.2013, 9:48; Ответить: fedornabilkin
Сообщение #7


Например можно вот так сделать.
Все сразу ясно и понятно становится.
if(isset($_GET['login']) && isset($_GET['password'])){

  // inject
  $login = input($_GET['login']);
  $password = encrypt(input($_GET['password']));

  # Проверяем существование аккавунта с этими данными
  $sql = "SELECT COUNT(*) FROM `users` WHERE `login` = '$login' AND `password` = '$password' LIMIT 1";
  $query = mysqli_query($db, $sql);

  if(mysqli_result($query, 0) == 1){
  
   # Массив с данными пользователя
   $sql = "SELECT * FROM `users` WHERE `login` = '$login' AND `password` = '$password' LIMIT 1";
   $query = mysqli_query($db, $sql);
   $user = mysqli_fetch_assoc($query);
  
   # Создаем ID в сессии
   $_SESSION['user_id'] = $user['id'];
   $id = $user['id'];
  
   # Записываем дату последнего посещения
   $last_time = time();
   $sql = "UPDATE `users` SET `date_last_entry` = '$last_time' WHERE `id` = '$id' LIMIT 1";
   $query = mysqli_query($db, $sql);
  
   // проверка наличия настроек
   $sql = "SELECT COUNT(*) FROM `user_settings` WHERE `user_id` = '$id'";
   $query = mysqli_query($db, $sql);
   if (mysqli_result($query, 0) == 0){
    $ins = mysqli_query("INSERT INTO `user_settings` SET `user_id` = '$id'");
   }
  
   # Массив с настройками
   $sql = "SELECT * FROM `user_settings` WHERE `user_id` = '$id' LIMIT 1";
   $query = mysqli_query($db, $sql);
   $settings = mysqli_fetch_assoc($query);
  }
  else $err .= 'Неверный логин или пароль<br />';
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RSST
RSST
Topic Starter сообщение 21.6.2013, 13:59; Ответить: RSST
Сообщение #8


Спасибо попробую :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 21.6.2013, 16:57; Ответить: fedornabilkin
Сообщение #9


А что пробовать? Я твой скрипт переписал в читаемый вид, а так он выполняет все то, что и раньше выполнял.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 21.6.2013, 18:51; Ответить: isvetlichniy
Сообщение #10


if(mysqli_result($query, 0) == 1)


достаточно просто вот так if(mysqli_result($query, 0))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Требуется помощь по сайту на "ВордПресс"
Закрылся доступ в панель администратора
12 Tia2 1527 25.3.2024, 6:54
автор: Skyworker
Открытая тема (нет новых ответов) требуется помощь с themasoftware (Темапостером)
0 Taylor 567 16.3.2024, 18:41
автор: Taylor
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСостояние после ампутации - нужна помощь
благотворительный топик
46 vitvirtual 5559 12.3.2024, 21:52
автор: Гиппопотам
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3291 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1170 24.11.2023, 14:46
автор: alexey


 



RSS Текстовая версия Сейчас: 29.3.2024, 1:37
Дизайн