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_result 1 строку

 PHP.SU

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


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

> Описание: Как получить из mysqli_result 1 строку
JamesGo
Отправлено: 26 Февраля, 2016 - 20:52:16
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2015  


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




Я совершенно не понимаю как обращаться с mysqli_result.
Для случая когда мне нужно почить из базы одну строку я использую ту-же функцию что и для получения множественного запроса только слегка модифицированный.
PHP:
скопировать код в буфер обмена
  1.     public function fetchRow($query, array $params)
  2.     {
  3.  
  4.         if ($this->result = $this->link->query($this->getQuery($query, $params))
  5.         ) {
  6.             $res = array();
  7.             while ($r = $this->result->fetch_array(MYSQLI_ASSOC))
  8.                 array_push($res, $r);
  9.  
  10.             if ($this->result->num_rows == 1)
  11.                 return $res[0];
  12.  
  13.             else  return false;
  14.  
  15.         } else {
  16.             Log::SQL("FAIL(" . $this->link->errno . "):" . $this->link->error . "\n");
  17.             return false;
  18.         }
  19.  
  20.     }


Подскажите как правильно получить только одну строку.


Кстати вот мой класс DB, буду рад критике.
Спойлер (Отобразить)


И пользуясь случаем хочу спросить есть ли разница скорости работы при запросах Select * и Select `field1`, `field2`, `field3`?
 
 Top
OrmaJever Модератор
Отправлено: 26 Февраля, 2016 - 23:47:07
Post Id



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


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


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




код внутри условия
PHP:
скопировать код в буфер обмена
  1. if ($this->result->num_rows == 1) {
  2.    return $this->result->fetch_array(MYSQLI_ASSOC);
  3. }
  4.  
  5. $res = array();
  6. while ($r = $this->result->fetch_array(MYSQLI_ASSOC)) {
  7.    array_push($res, $r);
  8. }
  9. return $res;


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JamesGo
Отправлено: 27 Февраля, 2016 - 12:14:02
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2015  


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




PHP:
скопировать код в буфер обмена
  1. $res = array();
  2. while ($r = $this->result->fetch_array(MYSQLI_ASSOC)) {
  3.    array_push($res, $r);
  4. }
  5. return $res;


Есть ли смысл оставит эти строки если я всегда в запросе присутствует LIMIT 1?

(Отредактировано автором: 27 Февраля, 2016 - 12:14:42)

 
 Top
OrmaJever Модератор
Отправлено: 27 Февраля, 2016 - 12:39:20
Post Id



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


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


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




нет конечно


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JamesGo
Отправлено: 27 Февраля, 2016 - 17:19:22
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2015  


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




Спасибо.
 
 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