Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] dostęp do tabeli sql?
lahhott
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Czytając inny plik, nie rozumiem poniżeszgo odwołania do bazy:
Cytat
$item = $db -> Execute("SELECT * FROM table");
Dlaczego jest to pisane w ten sposób? Czy nie można po prostu otworzyć połączenia z bazą poprzez mysqli_connect a potem wykonać Select przez mysqli_query? Na przykład:
Cytat
$q = "Select * from table";
$r = @mysqli_query ($db, $q);


Ten post edytował lahhott 20.07.2009, 06:04:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Jest to poprostu metoda klasy do obsługi bazy danych która np odrazu zwraca ci wszystkie wyniki zamiast bawic sie z mysql_fetch_assoc i podobne. Jest to bardzo wygodne.


--------------------
Go to the top of the page
+Quote Post
lahhott
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Czy w takim razie poniższy przykładowy kod zadziała?
  1. <?php
  2. $db = @mysqli_connect('localhost', 'root', 'password', 'db');
  3. $q = $db -> Execute ("SELECT id FROM tabela WHERE id = 69");
  4. echo "Wynik: $q";
  5. @mysqli_close($db);
  6. ?>
Efektem jest pusty ekran. Nie mam komunikatu błędu, jednak nie wyświetla się wartość 69. (w tabeli jest taki rekord)

Ten post edytował lahhott 20.07.2009, 14:15:49
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Proszę używać poprawnego bbcode, dajesz nam kod php , dawaj go w [ php] !
(popraw)
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  • Execute nie zwróci Ci bezpośrednio wartości. Przejrzyj dokumentację
  • po co Ci małpa przed funkcją? Kopiesz dołek pod sobą.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
lahhott
post
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Dzięki za podpowiedzi.

Spróbowałem tak:
  1. <?php
  2. $db = mysql_connect('localhost', 'root', 'password', 'db');
  3. if (!$db) {
  4.    die('Nie można się połączyć: ' . mysql_error());
  5. }
  6. echo 'Połączenie nawiązane';
  7. $q = "SELECT id FROM tabela WHERE id = 69";
  8. //$r = mysql_query($db, $q);
  9. $r = mysql_db_query($db, $q);
  10.  
  11. echo "Wynik: $r";
  12.  
  13. ?>

W wyniku otrzymuję:
"Połączenie nawiazaneWynik:"

Czyli połączył się z bazą, tylko dlaczego nie ma wartości 69?

Gdzie znajdę dokumentację dotyczącą Execute? Szukałem w manualu PHP, ale tak jakby tego nie było.

Ten post edytował lahhott 20.07.2009, 14:37:01
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Czy Ty nie rozumiesz, że wszystkie funkcje query zwracają zasób, z którego trzeba wyciągać dane?

Cytat
Szukałem w manualu PHP, ale tak jakby tego nie było.

Nie opowiadaj głupot, zacznij najpierw od kursu PHP+MySQL.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ert16
post
Post #8





Grupa: Zarejestrowani
Postów: 26
Pomógł: 5
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Najpierw musisz się dowiedzieć, czym jest $db. Pewnie to jakaś klasa z frameworku, do którego dokumentację znajdziesz gdzieś indziej.

tak BTW - dlaczego przechodzisz z obiektowego na programowanie proceduralne - chcesz cofnąć aplikację o krok do tyłu ?
Go to the top of the page
+Quote Post
lahhott
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Szukam tutaj:
http://www.php.net/manual/

Przeszedłem o krok niżej, aby ustalić, czy w ogóle prosta zmienna się wyświetla.

erix: Taaak, przy większości pytań są ludzie, którzy udzielają "inteligentnych" odpowiedzi typu "naucz się PHP i MySQL". Można na to odpowiedzieć "naucz się odpowiadać na pytania". smile.gif

Ten post edytował lahhott 20.07.2009, 14:46:03
Go to the top of the page
+Quote Post
ert16
post
Post #10





Grupa: Zarejestrowani
Postów: 26
Pomógł: 5
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat(lahhott @ 20.07.2009, 13:44:16 ) *
Szukam tutaj:
http://www.php.net/manual/

Przeszedłem o krok niżej, aby ustalić, czy w ogóle prosta zmienna się wyświetla.

Jeśli nie wiesz z jakim obiektem masz do czynienia, nie oczekuj znajomości jego argumentów ani rodzaju funkcjonowania.Ok, ale znajdź miejsce, gdzie tworzona jest zmienna $db, czasami pomocne może okazać się
  1. <?php
  2. var_dump($db);
  3. ?>
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zacznijmy od tego po co się pytasz dlaczego tak jest wywoływane zapytanie skoro podstaw używania baz danych nie znasz. Poznaj podstawy a dopiero potem wróć.


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
erix: Taaak, przy większości pytań są ludzie, którzy udzielają "inteligentnych" odpowiedzi typu "naucz się PHP i MySQL". Można na to odpowiedzieć "naucz się odpowiadać na pytania".

Patrz: post ~wookieb. Jak chcesz rozmawiać o stawianiu murów nie wiedząc, jak wygląda cegła? Czytać też od razu czytałeś, czy zaczynałeś od alfabetu? Pomyliłeś kolejność, kolego.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
lahhott
post
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Zrobiłem coś następującego, aby krok po kroku sprawdzać wykonanie skryptu:
  1. <?php
  2. echo 'Początek.<p>';
  3. $db = mysql_connect('localhost', 'root', 'password', 'db');
  4. echo 'Check1: Połączyłem z bazą.<p>';
  5. $q = "SELECT id, owner from tabela where id = 69"; //wykonanie Select'a z poziomu bazy zwraca 2 rekordy.
  6. echo 'Check2: Zdefiniowałem q jako Select.<p>';
  7. $r = mysql_query ($db, $q);
  8. echo 'Check3: Zdefiniowałem r jako zapytanie.<p>';
  9. if ($r) {
  10.    echo '
  11.    <table>
  12.    <tr>
  13.        <td align="left"><b>ajdi</b></td>
  14.        <td align="left"><b>owner</b></td>
  15.    </tr>
  16.    ';
  17.    echo 'Check4: jeśli r jest ok, to zrobiłem nagłówki tabeli.<p>';
  18.    while ($row = mysql_fetch_array($r, MYSQL_ASSOC)) {
  19.        echo '
  20.        <tr>
  21.        <td align="left"'.$row['id'].'</td>
  22.        <td align="left"'.$row['owner'].'</td>
  23.        </tr>
  24.        ';
  25.    }
  26.    echo '</table>';
  27.    mysql_free_result ($r);
  28. }
  29. else {
  30.    echo 'Błąd systemu.';
  31.    echo 'Błąd: '.mysql_error($db).' Zapytanie: '.$q.'.';
  32. }
  33. echo 'Koniec.<p>';
  34. ?>

Jako wynik otrzymuję:

Cytat
Początek.
Check1: Połączyłem z bazą.
Check2: Zdefiniowałem q jako Select.
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:...file.php on line 18
Check3: Zdefiniowałem r jako zapytanie.
Błąd systemu.Błąd: Zapytanie: SELECT id, owner from equipment where id = 69.
Koniec.

Dlaczego Select, który normalnie wykonuje się z poziomu bazy w powyższy sposób nie chce się wykonać?

Ten post edytował lahhott 20.07.2009, 16:01:03
Go to the top of the page
+Quote Post
wookieb
post
Post #14





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A ja zachęcę to dalszego użycia największego narządu międzyczaszkowego. http://pl2.php.net/mysql_query

Ten post edytował wookieb 20.07.2009, 16:36:37


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 00:39