Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-10-15 16:15:32

  misioooo - Członek DUG

misioooo
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-06-10

[SOLVED] Zapytania do bazy danych MySQL w PHP

Hej!
Połączenie z db jest ok. Tabele istnieją, literówki nie znalazłem...
Mam mniej więcej taki kod (fragment stwarzający problem):

Kod:

$results = $mysqli->query("SELECT name, start_time, end_time, room_id FROM mrbs_entry WHERE start_time >= UNIX_TIMESTAMP()-21600 AND end_time >= UNIX_TIMESTAMP() ORDER BY start_time");
if($results){ 
    while($row = $results->fetch_object()) {
      $room = $mysqli->query('SELECT room_name FROM mrbs_room WHERE id = $row->room_id');

I na tej ostatniej linijce się wywala.
Wg phpMyAdmina zarówno pola id w tabeli room jak i pola room_id w tabeli entry są typu INT(11).

W logu apacha mam:

Kod:

[Wed Oct 15 16:03:38.296135 2014] [:error] [pid 16062] [client ::1:52875] PHP Catchable fatal error:  Object of class mysqli_result could not be converted to string in /var/www/html/rss/rss3.php on line 82

Chyba, że inaczej to można wydobyć z tabeli - potrzebuję wartości room_name z wiersza posiadającego (unikatowy) ID = room_id z innej tabeli/tej samej bazy.
Dodam, że z poziomu phpadmina zapytanie w bazie wykonuje się )oczywiście zamiast zmiennej wstawiam cyferkę). Jak w pliku php też podstawię cyferkę zamiast zmiennej - nadal to samo... Nie działa i pluje w/w errorem z apacza.

Ostatnio edytowany przez misioooo (2014-10-16 09:56:43)


https://wiki.debian.org/DebianArt/Themes/Lines?action=AttachFile&do=get&target=banner.png

Offline

 

#2  2014-10-15 16:29:13

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

a czemu nie zrobisz tego po ludzki tylko kombinujesz z jakimiś "obiektami"?


Na stronie PHP.net masz idealne przykłady jak to robić ;)

Kod:

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);  
}

mysql_free_result($result);
?>

Poza tym skoro potrzebujesz tylko jednego pola to po grzyba ich tyle w zapytaniu wybierasz? :>

I taki cytacik w temacie:

Rozejrzyj się wokoło. Zobacz jak zbudowany jest świat. Szybko stwierdzisz, że świat składa się z obiektów, które wchodzą w interakcje. Tak mniej więcej zaczyna się jakieś 99% kursów dotyczących programowania obiektowego. Pozostałe 1% zaczyna się mniej więcej tak: php jest językiem obiektowym.


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#3  2014-10-15 16:36:34

  misioooo - Członek DUG

misioooo
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-06-10

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

Nie zauważyłeś... Ja w kodzie korzystam z dwóch różnych tabel. Na początku biorę ileśtam różnych pól.
Potem je przetwarzam jak chcę i potrzebuję jeszcze jednego pola z drugiej tabeli:

Kod:

$room = $mysqli->query('SELECT room_name FROM mrbs_room WHERE id = $row->room_id');

I to pole ma być z wiersza o ID = room_id_z_pierwszej_tabeli
Przykład, który podałeś to odpowiednik mojego pierwszego zapytania do tabeli 1:

Kod:

$results = $mysqli->query("SELECT name, start_time, end_time, room_id FROM mrbs_entry WHERE start_time >= UNIX_TIMESTAMP()-21600 AND end_time >= UNIX_TIMESTAMP() ORDER BY start_time");

I to mi działa ok.

Czemu mysql, a nie mysqli?


https://wiki.debian.org/DebianArt/Themes/Lines?action=AttachFile&amp;do=get&amp;target=banner.png

Offline

 

#4  2014-10-15 16:45:53

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

Takie rzeczy na dwóch tabelach robi się złączeniami wewnętrznymi lub zewnętrznymi, zainteresuj się, co robi w Mysql funkcja JOIN.
W każdym razie potrzebujesz tylko jednego zapytania, a nie dwóch.

Sznurki:
http://dev.mysql.com/doc/refman/5.0/en/join.html
http://webmaster.helion.pl/index.php/kursmysql-pobi … nikow-zapytan

Ostatnio edytowany przez Jacekalex (2014-10-16 11:14:48)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2014-10-15 17:12:02

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

tak przy okazji - nie chcę być, kolego @jacekalex, źle zrozumiany, ale o ile znam Produkt Horego Programisty to funkcje typy mysql_cośtam i mysqli_cośtam to dwa różne światy.
Owszem, oba to są takie małe światki funkcjonujące w PHP - co nie zmienia faktu że są różne, i gość z Twoim doświadczeniem powinien je (przynajmniej po trzeźwemu) odróżniać.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#6  2014-10-15 17:18:17

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

Oczywiście, że różne światy, ale we wsi ludzie mówią, że oba do połączenia z bazą na serwerze  Mysql.
I konia z rzędem temu, co zna taką funkcję do połączenia z Mysql z poziomu PHP, które nie obsługuje złączeń JOIN. :D

Ostatnio edytowany przez Jacekalex (2014-10-15 19:45:10)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2014-10-15 17:26:37

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

przede wszystkim - odróżnijmy funkcję dowolnego języka programowania typu "(my|pg|oracle|ms)sql_query" ('dupa') od zawartości owej kwerendy - która nie ma nic wspólnego z pechapem, pythonem, perlem czy używanym lokalnie językiem ZuluGula.
Niestety - z różnych dziwnych przyczyn (z których niedouczenie i awersja do czytania dokumentacji są najbardziej popularne) tzw. "programiści" PHP (cudzysłów użyty intencjonalnie) uważają, że kwerenda SQL (a konkretniej MySQL, bo innych przecież nie ma) jest częścią "języka" "programowania".


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#8  2014-10-15 19:51:42

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

@Ethanak

Ciągniesz OT na siłę?
W php-mysql -można używać złączeń JOIN?
W php-mysqli można używać złączeń JOIN?

Z moich informacji wynika, że można w obu.

O Perlach, Pythonach i Zulugulach ten wątek raczej nie jest, podobnie jak nie jest np o PgSQL, ani o SQlite czy Firebirdzie.
Dotyczy dwóch sposobów połączenia z bazą Mysql z poziomu PHP, które nie są ze sobą zgodne, ale też w stosunku do języka SQL nie są tak rożne, jak bash i assembler.

To by było na tyle
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2014-10-16 09:55:49

  misioooo - Członek DUG

misioooo
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-06-10

Re: [SOLVED] Zapytania do bazy danych MySQL w PHP

Jacekalex napisał(-a):

Takie rzeczy na dwóch tabelach robi się złączeniami wewnętrznymi lub zewnętrznymi, zainteresuj się, co robi w Mysql funkcja JOIN.
W każdym razie potrzebujesz tylko jednego zapytania, a nie dwóch.

Sznurek:
http://dev.mysql.com/doc/refman/5.0/en/join.html
http://webmaster.helion.pl/index.php/kursmysql-pobi … nikow-zapytan

Dziękuję :) Nie zajmuję się SQLem stąd moja niewiedza. Po poczytaniu odrobiny informacji odpowiedź okazała sie banalnie prosta ;P

Kod:

$results = $mysqli->query("SELECT name, start_time, end_time, room_id, room_name FROM mrbs_entry, mrbs_room WHERE start_time >= UNIX_TIMESTAMP()-21600 AND end_time >= UNIX_TIMESTAMP() AND mrbs_entry.room_id = mrbs_room.id ORDER BY start_time");

Takie coś zwraca mi to co chcę, ot tak po prostu.


https://wiki.debian.org/DebianArt/Themes/Lines?action=AttachFile&amp;do=get&amp;target=banner.png

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)