Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] dostęp do tabeli sql?
Forum PHP.pl > Forum > Przedszkole
lahhott
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);
wookieb
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.
lahhott
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)
Spawnm
Proszę używać poprawnego bbcode, dajesz nam kod php , dawaj go w [ php] !
(popraw)
erix
  • Execute nie zwróci Ci bezpośrednio wartości. Przejrzyj dokumentację
  • po co Ci małpa przed funkcją? Kopiesz dołek pod sobą.
lahhott
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.
erix
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.
ert16
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 ?
lahhott
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
ert16
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. ?>
wookieb
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óć.
erix
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.
lahhott
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ć?
wookieb
A ja zachęcę to dalszego użycia największego narządu międzyczaszkowego. http://pl2.php.net/mysql_query
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.