Forum Webscript.Ru

Программирование => PHP => Тема начата: Vovan от 28 Декабря 2002, 17:18:41

Название: Выборка данных из базы MySQL
Отправлено: 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\\n";
 }
 print "\\t\\n";
}
print "
$col_value
\\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"];



Но как-то все длинно и некрасиво? Есть другой способ? В перл это делается одной строчкой.
Название: Выборка данных из базы MySQL
Отправлено: Vovan от 28 Декабря 2002, 17:19:34
Если кто не понял, что я хочу, то приведу пример на perl


($name, $photo) = $dbh->selectrow_array ("SELECT name, photo FROM $prefix\\_users WHERE ...");


Как это на ПХП сделать?
Название: Выборка данных из базы MySQL
Отправлено: tserbis от 28 Декабря 2002, 17:44:35
list(...) = mysql_fetch...
Название: Выборка данных из базы MySQL
Отправлено: Меняздесьдавнонет от 28 Декабря 2002, 18:03:14
Молодой человек.
Это делается не в 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 рульная и сама по себе, а с необязательным аргументом - вообще супер.