Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   php + mysql (http://forum.oszone.net/showthread.php?t=116141)

Аlchemist 03-09-2008 18:04 890247

php + mysql
 
Делаю запрос к базе с консоли:
mysql > select date,sum(bytes) from rl0_2008 group by date;
Все ок, выдает результат.
Но запрос из index.php почему-то не работает - возвращает какой-то Resource id #3
PHP код:

<?php
$sql 
mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
echo 
$sql;
?>

менял запросы, прикручивал циклы - ноль эммоций...
В чем проблема может быть?

BuGfiX 03-09-2008 18:30 890267

эмм.. а где mysql_connect, mysql_select_db, mysql_close ?
http://phpclub.ru/detail/article/phpintro

Coutty 03-09-2008 20:07 890319

Цитата:

Цитата Аlchemist
Но запрос из index.php почему-то не работает - возвращает какой-то Resource id #3 »

Так в $sql и содержится ссылка на ресурс.
Чтобы его обработать, нужно использовать функции $a = mysql_fetch_array($sql) или $a=mysql_fetch_assoc($sql) для индексного и ассоциативного массивов соответственно. Там ещё что-то есть, но не помню.

Аlchemist 03-09-2008 23:28 890420

Цитата:

Цитата BuGfiX
эмм.. а где mysql_connect, mysql_select_db, mysql_close ? »

все это есть:
PHP код:

// 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 890421

Цитата:

Цитата Coutty
Там ещё что-то есть, но не помню »

ещё есть mysql_fetch_row

Аlchemist 03-09-2008 23:40 890429

Цитата:

Цитата Coutty
Так в $sql и содержится ссылка на ресурс.
Чтобы его обработать, нужно использовать функции $a = mysql_fetch_array($sql) или $a=mysql_fetch_assoc($sql) для индексного и ассоциативного массивов соответственно. Там ещё что-то есть, но не помню. »

Так делал:
PHP код:

$sql mysql_query ("select date,sum(bytes) from rl0_2008 group by date");
while (
$a mysql_fetch_array($sql)) {
echo 
$a

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

Цитата:

Цитата timon4ik
ещё есть mysql_fetch_row »

так еще пробовал:
PHP код:

$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 890769

Цитата:

Цитата Аlchemist
$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 890852

Цитата:

Цитата timon4ik
И второе, $a в этом случае - это массив, и обращаться к его элементам нужно соответственно echo $a[0]; echo $a[1]; »

Так что-то выходит, но не совсем то, что хотелось бы увидеть...
Вобщем всем спасибо, я ушел основательно учить PHP.
Если есть ссылки на стоящие доки - буду признателен. :)

Coutty 04-09-2008 16:21 890936

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

/* Соединение, выбор БД */
    
$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($resultMYSQL_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 890978

Coutty, спасибо, с этой конструкцией все выводит, осталось только дописать сортировку.

Coutty 04-09-2008 17:49 891018

Сортировку можно задавать в sql-запросе.
PHP код:

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.


Время: 06:09.

Время: 06:09.
© OSzone.net 2001-