Forum Webscript.Ru
Программирование => PHP => Тема начата: Vovan от 28 Декабря 2002, 17:18:41
-
Если требуется извлечь несколько строк из базы, то мы это делаем так:
$query = "SELECT * FROM my_table";
$result = mysql_query ($query)
or die ("Query failed");
// printing HTML result
print "\\n";
while ($line = mysql_fetch_array($result)) {
print "\\t\\n";
while(list($col_name, $col_value) = each($line)) {
print "\\t\\t$col_value | \\n";
}
print "\\t
\\n";
}
print "
\\n";
А если нужно извлечь всего лишь несколько значений в одной строке? Как тогда поступить?
Вот, нашел один вариант:
Исходный код
$query="select message,post_date,info.posts,info.email from topics,info where ...";
$result=mysql_query ($query);
$row=mysql_fetch_array ($result);
$message=$row["message"];
$post_date=$row["post_date"];
$posts=$row["posts"];
$email=$row["email"];
Но как-то все длинно и некрасиво? Есть другой способ? В перл это делается одной строчкой.
-
Если кто не понял, что я хочу, то приведу пример на perl
($name, $photo) = $dbh->selectrow_array ("SELECT name, photo FROM $prefix\\_users WHERE ...");
Как это на ПХП сделать?
-
list(...) = mysql_fetch...
-
Молодой человек.
Это делается не в Perl одной строчкой, а в некоей библиотеке, которую ты цепляешь к своей программе..
В коей библиотеке полсотни строк, как минимум, эту функцию реализуют.
Я достаточно доступно излагаю?
"На PHP" получается еще короче:
extract(db_row("select name,age from table"));
Только функцию db_row надо написать самому:
function db_row($query) {
$r=mysql_query($query);
if (!$r) die(mysql_error());
if (!mysql_num_rows($r)) return array();
return mysql_fetch_array($r);
}Впрочем, можно и без функций в одну строчку, но без обработки ошибок
extract(mysql_fetch_array(mysql_query("select * from table")));функция extract рульная и сама по себе, а с необязательным аргументом - вообще супер.