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
Форумы портала PHP.SU :: Версия для печати :: Как получить из mysqli_result 1 строку
Форумы портала PHP.SU » » Работа с СУБД » Как получить из mysqli_result 1 строку

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

1. JamesGo - 26 Февраля, 2016 - 20:52:16 - перейти к сообщению
Я совершенно не понимаю как обращаться с 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`?
2. OrmaJever - 26 Февраля, 2016 - 23:47:07 - перейти к сообщению
код внутри условия
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. JamesGo - 27 Февраля, 2016 - 12:14:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $res = array();
  2. while ($r = $this->result->fetch_array(MYSQLI_ASSOC)) {
  3.    array_push($res, $r);
  4. }
  5. return $res;


Есть ли смысл оставит эти строки если я всегда в запросе присутствует LIMIT 1?
4. OrmaJever - 27 Февраля, 2016 - 12:39:20 - перейти к сообщению
нет конечно
5. JamesGo - 27 Февраля, 2016 - 17:19:22 - перейти к сообщению
Спасибо.

 

Powered by ExBB FM 1.0 RC1