foosql_query()
, которая заметно сокращает объём кода.
Примерно вот так:
<?php
define('SQL_CELL', 2);
define('SQL_ROW', 1);
define('SQL_COL', -1);
define('SQL_HASH', -2);
function sql($query,$pack_level=0) {
$res=mysql_query($query);
if( is_resource($res) ) {
$data=array();
if( $pack_level==SQL_HASH )
while( list($key,$val)=mysql_fetch_row($res) ) $data[$key]=$val;
elseif( $pack_level==SQL_COL )
while( $row=mysql_fetch_row($res) ) $data[]=end($row);
else {
while( $row=mysql_fetch_assoc($res) ) $data[]=$row;
while( $pack_level-- && count($data) ) $data=end($data);
}
return $data;
}
}
?>
Этого вполне достаточно, чтобы писать простые веб-приложения. Для сложных веб-приложений потребуется высокоуровневая абстракция. А для новостных лент, гостевых книг и прочей мелочёвки вполне достаточно одной функции. Не верите?
$result = sql('SELECT * FROM table');
- возвращает массив массивов (массив строк результата):
array(
array('id'=>1, 'name'=>'Foo'),
array('id'=>2, 'name'=>'Bar') ) $result = sql('SELECT * FROM table WHERE id=1', SQL_ROW);
- возвращает ассоциативный массив (одна строчка результата):
array( 'id'=>1, 'name'=>'Foo' )
$result = sql('SELECT name FROM table WHERE id=1', SQL_CELL);
- возвращает скалярное значение:
'Foo'
$result = sql('SELECT name FROM table', SQL_COL);
- возвращает массив (столбец результатов):
array( 'Foo', 'Bar' )
$result = sql('SELECT id, name FROM table', SQL_HASH);
- возвращает ассоциативный массив с ключами из id и значениями table:
array( 1=>'Foo', 2=>'Bar' )
(порядок переменных в SELECT'е важен) sql('DELETE FROM table WHERE id=10');
sql('UPDATE table SET enabled=0 WHERE publication_date<NOW()');
- просто выполняет запрос