Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: MySQLi ошибка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
event
Отправлено: 03 Марта, 2013 - 11:56:59
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Привет.
Есть такой код:
PHP:
скопировать код в буфер обмена
  1. $mysql = array(
  2.         //Настройки подключения к базе данных
  3.         "host" => "localhost", //MySQL хост
  4.         "user" => "root", //Пользователь
  5.         "password" => "123456", //Пользователь
  6.         "database" => "test", //База данных
  7.         "charset" => "cp1251" //Кодировка
  8. );
  9.  
  10. //Подключаемся к БД
  11. $mysqli = @ new mysqli($mysql['host'], $mysql['user'], $mysql['password'], $mysql['database']);
  12.  
  13. $mysqli->query("SET NAMES " . $mysql['charset']);
  14.        
  15.         die("MySQL connect error: " . mysqli_connect_error());
  16. }
  17.  
  18. function userlogin() {
  19.         global $config, $mysqli, $lang;
  20.  
  21. ...
  22.  
  23.         $res = $mysqli->query("SELECT * FROM users");
  24.         $row = $mysqli->fetch_array($res);
  25.         if (!$row) {
  26.                 user_session();
  27.                 return;
  28.         }
  29.  
  30. ...
  31.  
  32.  


В ответ получаю:
Fatal error: Call to undefined method mysqli::fetch_array() in C:\AppServ\www\include\functions\functions.php on line 127

Говорит что ошибка тут: $row = $mysqli->fetch_array($res); Ну вот, а где там собственно ошибка?
 
 Top
jedmiry
Отправлено: 03 Марта, 2013 - 12:16:07
Post Id



Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2013  
Откуда: Иваново, Россия


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1.         $res = $mysqli->query("SELECT * FROM users");
  2.         $row = $mysqli->fetch_array($res);

Замените на
PHP:
скопировать код в буфер обмена
  1.         $res = $mysqli->query("SELECT * FROM users");
  2.         $row = $res->fetch_array();

Метод query возвращает объект класса mysqli_result.
 
 Top
OrmaJever Модератор
Отправлено: 03 Марта, 2013 - 12:17:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




А вы сами код писали или спёрл у когото?
Класс mysqli не имеет метода fetch_array.
Метод mysqli::query() возвращает обьект, и вот в нём уже есть fetch_array. Для примера.
PHP:
скопировать код в буфер обмена
  1. $q = $mysqli->query("SET NAMES " . $mysql['charset']);
  2. $q->fetch_array();


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
event
Отправлено: 03 Марта, 2013 - 12:38:50
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Спасибо ребят!

Еще такой вопрос, как переделать эту функцию под mysqli:
PHP:
скопировать код в буфер обмена
  1. function mysqli_modified_rows () {
  2.         $info_str = mysqli_info();
  3.         $a_rows = mysqli_affected_rows();
  4.         preg_match("/Rows matched: ([0-9]*)/", $info_str, $r_matched);
  5.         return ($a_rows < 1)?($r_matched[1]?$r_matched[1]:0):$a_rows;
  6. }

(Добавление)
if (count($updateset))
$mysqli->query("UPDATE sessions SET ".implode(", ", $updateset)." WHERE ".implode(" AND ", $where)) or sqlerr(__FILE__,__LINE__);
if (mysqli_modified_rows() < 1)
$mysqli->query("INSERT INTO sessions (sid, uid, username, class, ip, time, url, useragent) VALUES (".implode(", ", array_map("sqlesc",
array($sid, $uid, $username, $class, $ip, $ctime, $url, $agent))).")") or sqlerr(__FILE__,__LINE__);
}

Вот, как тут переделать под мускули? (if (mysqli_modified_rows() < 1))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB