09:28 Особенности работы с mysql_fetch_array в PHP |
При создании метода в класе доступа к БД, часто необходимо выбрать только первую запись, при этом метод вернет хеш. Но если запрос типа - "SELECT count(*) FROM users", то тут надо вернуть просто переменную. Решение может быть следующие: function select_first($sql){ $sql.=" LIMIT 1" ; $sth = $this->execute($sql); $num = ($sth?mysql_num_rows($sth):0); if ($num == 1){ $row = mysql_fetch_array($sth); if(sizeof($row)==2){ return $row[0]; }else{ return $row; } }else{ return false; } } Ключевым будет блок: if(sizeof($row)==2){ return $row[0]; }else{ return $row; } Здесь мы используем свойство mysql_fetch_array, зная что возвратится хеш+просто массив. Например если бы мы вызвали метод с таким запросом: $res=select_first("SELECT name FROM users WHERE id=1"); то если допустим такой юзер есть и его имя Sergey, то: $row['name'] = "Sergey" $row[0] ="Sergey" SizeOf($row) = 2 в случае возврата 1 поля. Потому мы всегда при необходимости возвратим хеш или просто переменную. Это решение не претендует на полноту, так как класы по работе с БД сейчас довольно продвинутые (для ПХП), просто мне пришлось работать с проектом, где работа с БД реализована довольно примитивно. Но может это кому-то понадобится :) |
|