PDA

Показать полную графическую версию : php + mysql


Аlchemist
03-09-2008, 18:04
Делаю запрос к базе с консоли:
mysql > select date,sum(bytes) from rl0_2008 group by date;
Все ок, выдает результат.
Но запрос из index.php почему-то не работает - возвращает какой-то Resource id #3
<?php
$sql = mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
echo $sql;
?>
менял запросы, прикручивал циклы - ноль эммоций...
В чем проблема может быть?

BuGfiX
03-09-2008, 18:30
эмм.. а где mysql_connect, mysql_select_db, mysql_close ?
http://phpclub.ru/detail/article/phpintro

Coutty
03-09-2008, 20:07
Но запрос из index.php почему-то не работает - возвращает какой-то Resource id #3 »
Так в $sql и содержится ссылка на ресурс.
Чтобы его обработать, нужно использовать функции $a = mysql_fetch_array($sql) или $a=mysql_fetch_assoc($sql) для индексного и ассоциативного массивов соответственно. Там ещё что-то есть, но не помню.

Аlchemist
03-09-2008, 23:28
эмм.. а где mysql_connect, mysql_select_db, mysql_close ? »
все это есть:
// IP хостов, интерфейсы,
$db_host = "localhost";
$db_user = "user";
$db_passwd = "pass";
$db_db = "base";
//Пытаемся приконнектится к БД
mysql_connect($db_host,$db_user,$db_passwd) or die ("Караулнах!!!");
//Выбираем базу данных
mysql_select_db($db_db) or die (mysql_error());
// пошел запрос
$sql = mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
// выводим результаты
echo $sql;
?>

timon4ik
03-09-2008, 23:31
Там ещё что-то есть, но не помню »
ещё есть mysql_fetch_row

Аlchemist
03-09-2008, 23:40
Так в $sql и содержится ссылка на ресурс.
Чтобы его обработать, нужно использовать функции $a = mysql_fetch_array($sql) или $a=mysql_fetch_assoc($sql) для индексного и ассоциативного массивов соответственно. Там ещё что-то есть, но не помню. »
Так делал:
$sql = mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
while ($a = mysql_fetch_array($sql)) {
echo $a;

но не помогло =\

ещё есть mysql_fetch_row »
так еще пробовал:
$sql = mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
$row = mysql_fetch_row($sql);
echo $row;

тоже не катит

timon4ik
04-09-2008, 13:04
$sql = mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
while ($a = mysql_fetch_array($sql)) {
echo $a; »
А закрыть скобку } после while ?
И второе, $a в этом случае - это массив, и обращаться к его элементам нужно соответственно echo $a[0]; echo $a[1];

Аlchemist
04-09-2008, 14:51
И второе, $a в этом случае - это массив, и обращаться к его элементам нужно соответственно echo $a[0]; echo $a[1]; »
Так что-то выходит, но не совсем то, что хотелось бы увидеть...
Вобщем всем спасибо, я ушел основательно учить PHP.
Если есть ссылки на стоящие доки - буду признателен. :)

Coutty
04-09-2008, 16:21
Аlchemist, самый лучший док по PHP - официальный. Есть и на русском языке. Смотрите на офсайте.
Вот там приведён пример взаимодействия PHP+MySQL:

/* Соединение, выбор БД */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect");
print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");

/* Выполнение SQL query */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed");

/* Печать результатов в HTML */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";

/* Освобождение resultset */
mysql_free_result($result);

/* Закрытие соединения */
mysql_close($link);
?>

Аlchemist
04-09-2008, 17:02
Coutty, спасибо, с этой конструкцией все выводит, осталось только дописать сортировку.

Coutty
04-09-2008, 17:49
Сортировку можно задавать в sql-запросе.
SELECT * FROM my_table ORDER BY my_col_name ASC
SELECT * FROM my_table ORDER BY my_col_name DESC
Соответственно - в прямом и обратном порядке сортирует по столбцу my_col_name. Можно указывать номер столбца цифрой, а не именем. Нумеруются с единицы.
Можно дописать через запятую вторичную сортировку (скажем, сначала идёт сортировка по фамилии, а если одинаковые фамилии встречаются, то задать сортировку по уровню годового дохода:)).
Подробнее о SELECT'e (http://www.mysql.ru/docs/man/SELECT.html).




© OSzone.net 2001-2012