Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Błąd
Forum PHP.pl > Forum > Przedszkole
krzychu0808
chciałem wyświetlić dane z bazy danych w formie 'userid' znany jako username np: 'krzychu0808' znany jako Krzysztof Kowalski
zrobiłem:
  1. <?php
  2. include "./common_db.inc";
  3.  
  4. $link_id = db_connect('sample_db');
  5. $result = mysql_query("SELECT userid, username FROM user", $link_id);
  6.  
  7. while($query_data = mysql_fetch_row($result)) {
  8. echo ",".$query_data[0]."' znany jako'".$query_data[1]."<P>";
  9. }
  10. ?>


common_db.inc
  1. <?php
  2. $dbhost = 'localhost';
  3. $dbusername = 'xxx';
  4. $dbuserpassword = 'xxx';
  5. $default_dbname = 'mysql';
  6.  
  7. $MYSQL_ERRNO = '';
  8. $MYSQL_ERROR = '';
  9.  
  10. function db_connect() {
  11. global $dbhost, $dbusername, $dbuserpassword, $default_dbname;
  12. global $MYSQL_ERRNO, $MYSQL_ERROR;
  13.  
  14. $link_id = mysql_connect($dbhost, $dbusername, $dbuserpassword);
  15. if(!$link_id) {
  16. $MYSQL_ERRNO = 0;
  17. $MYSQL_ERROR = "Nie udało się nawiązać połączenia z $dbhost.";
  18. return 0;
  19. }
  20. else if (empty($dbhost) && !mysql_select_db($default_dbname)) {
  21. $MYSQL_ERRNO = mysql_errno();
  22. $MYSQL_ERROR = mysql_error();
  23. return 0;
  24. }
  25. else return $link_id;
  26. }
  27. function sql_error() {
  28. global $MYSQL_ERRNO, $MYSQL_ERROR;
  29.  
  30. if(empty($MYSQL_ERROR)) {
  31. $MYSQL_ERRNO = mysql_errno();
  32. $MYSQL_ERROR = mysql_error();
  33. }
  34. return "$MYSQL_ERRNO: $MYSQL_ERROR";
  35. }
  36. ?>


i mam błąd:
  1. <?php
  2. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:Program FilesApache GroupApache2htdocs2show_more_db.php on line 16
  3. ?>
grzegorz_m
pomyliłeś mysql_select_db z mysql_connect
krzychu0808
zrobiłem
  1. <?php
  2. $link_id = mysql_select_db('sample_db');
  3. ?>

zamiast
  1. <?php
  2. $link_id = db_connect('sample_db');
  3. ?>


To mi wywala:
  1. <?php
  2. Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:Program FilesApache GroupApache2htdocs2show_more_db.php on line 13
  3.  
  4. Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in C:Program FilesApache GroupApache2htdocs2show_more_db.php on line 13
  5.  
  6. Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:Program FilesApache GroupApache2htdocs2show_more_db.php on line 14
  7.  
  8. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:Program FilesApache GroupApache2htdocs2show_more_db.php on line 16
  9. ?>
grzegorz_m
1) połączenie z bd
2) zmiana bazy
3) zapytanie do bazy
4) [zamknięcie połączenia]

$db_cnn = mysql_connect("localhost","login","haslo");
mysql_select_db("baza_danych", $db_cnn);
$query = "SELECT * FROM tbl_tabela";
if($result = mysql_query($query, $db_cnn))
{
   //pobrano
}
else
{
  //nie pobrano
}
Kicok
1. Nie sprawdzasz czy udało się nawiązać połączenie z bazą danych
2. Nie sprawdzasz czy udało się wykonać zapytanie
Heweliusz
Funkcja db_connect() powinna wymagać argumentów:
  1. <?php
  2. function db_connect($dbhost, $dbusername, $dbuserpassword, $default_dbname)
  3. {
  4. /*Reszta ciała funkcji*/
  5. }
  6. ?>

Nie wiem, po co ustawiać te zmienne jako globalne.
krzychu0808
nie wiem może źle skonfigurowany serwer ale zrobiłem tak

  1. <?php
  2. include "./common_db.inc";
  3.  
  4. $db_cnn = mysql_connect("localhost","root","xxx");
  5. mysql_select_db("sample_db", $db_cnn);
  6. $query = "SELECT * FROM tbl_tabela";
  7. if($result = mysql_query($query, $db_cnn))
  8.  
  9. while($query_data = mysql_fetch_row($result)) {
  10. echo ",".$query_data["userid"]."' znany jako'".$query_data["username"]."<P>";
  11. }
  12. ?>

i mi wyświetla pustą stronę
Piotrwusek
a masz informacje w bazie? tongue.gif
Heweliusz
Wstaw error_reporting(E_ALL) na początek, oraz do funkcji dopisz:
  1. <?php
  2. $db_cnn = mysql_connect("localhost","root","xxx") or die("błąd połączenia");
  3. mysql_select_db("sample_db", $db_cnn) or die("błąd przy wyborze bazy");
  4. ?>

Napisz, co ci się wyświetla, bo takia metoda prób i błędów nie zda tutaj egzaminu.
grzegorz_m
a masz tabelę tbl_tabela?

Wyświetlaj sobie komunikaty, to będziesz wiedział na czym stoisz...
(potem je skasujesz)
krzychu0808
mam dane


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
jak wstawić to error_reporting(E_ALL)questionmark.gifquestionmark.gif?

nie mam tbl_tabela.
uczę się od paru dni dopiero godzinę temu skończyłem się uczyć robić wpisy do tabel ;p a chce teraz nauczyć się odczytywać to...
mam książkę z "PHP 4 OD PODSTAW" wydanie 2000r. ;p według przykładów jadę
Heweliusz
Cytat(krzychu0808 @ 19.07.2008, 17:13:22 ) *
jak wstawić to error_reporting(E_ALL)questionmark.gifquestionmark.gif?

Choćby tak:
  1. <?php
  2. ?>

Jesteś pewien, że masz prawidłowe dane dostępu do bazy ?
krzychu0808
tak bo mam plik który łączy się z bazą i wyświetla połączenie udane lub nie i pisze połaczenie udane

dałem
  1. <?php
  2.  
  3. $db_cnn = mysql_connect("localhost","root","xxx") or die("błąd połączenia");
  4. mysql_select_db("sample_db", $db_cnn) or die("błąd przy wyborze bazy");
  5. $query = "SELECT * FROM sample_db";
  6. if($result = mysql_query($query, $db_cnn))
  7.  
  8. while($query_data = mysql_fetch_row($result)) {
  9. echo ",".$query_data["userid"]."' znany jako'".$query_data["username"]."<P>";
  10. }
  11. ?>

i pusto

plik którym sprawdzam połaczenie:
  1. <?php
  2. include "./common_db.inc";
  3.  
  4. $link_id = db_connect();
  5. if(!$link_id) die(sql_error());
  6. else echo "Udało się nawiązać połaczenie z $dbhost.<br/>";
  7. ?>


i do tego:
include "./common_db.inc";
  1. <?php
  2. $dbhost = 'localhost';
  3. $dbusername = 'root';
  4. $dbuserpassword = 'xxx';
  5. $default_dbname = 'sample_db';
  6.  
  7. $MYSQL_ERRNO = '';
  8. $MYSQL_ERROR = '';
  9.  
  10. function db_connect() {
  11. global $dbhost, $dbusername, $dbuserpassword, $default_dbname;
  12. global $MYSQL_ERRNO, $MYSQL_ERROR;
  13.  
  14. $link_id = mysql_connect($dbhost, $dbusername, $dbuserpassword);
  15. if(!$link_id) {
  16. $MYSQL_ERRNO = 0;
  17. $MYSQL_ERROR = "Nie udało się nawiązać połączenia z $dbhost.";
  18. return 0;
  19. }
  20. else if (empty($dbhost) && !mysql_select_db($default_dbname)) {
  21. $MYSQL_ERRNO = mysql_errno();
  22. $MYSQL_ERROR = mysql_error();
  23. return 0;
  24. }
  25. else return $link_id;
  26. }
  27. function sql_error() {
  28. global $MYSQL_ERRNO, $MYSQL_ERROR;
  29.  
  30. if(empty($MYSQL_ERROR)) {
  31. $MYSQL_ERRNO = mysql_errno();
  32. $MYSQL_ERROR = mysql_error();
  33. }
  34. return "$MYSQL_ERRNO: $MYSQL_ERROR";
  35. }
  36. ?>


gdy wpiszę złą nazwe użytkownika to mam błąd:
  1. <?php
  2. Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:Program FilesApache GroupApache2htdocs2show_more_db.php on line 13
  3. błąd połączenia
  4. ?>


a jak wpisze złą nazwe bazy to mam:
"błąd przy wyborze bazy"

więc łączy się i nazwa bazy danych też poprawna.... może niech ktoś napisze prosty skrypt który odczyta np userid i zobaczymy czy zadziała może wina jest po stronie apache
Heweliusz
Troszkę zmodyfikuję twoją funkcję:
  1. <?php
  2. function db_connect($dbhost, $dbusername, $dbuserpassword, $default_dbname) {
  3. global $MYSQL_ERRNO, $MYSQL_ERROR;
  4.  
  5. $link_id = mysql_connect($dbhost, $dbusername, $dbuserpassword);
  6. if(!$link_id) {
  7. $MYSQL_ERRNO = 0;
  8. $MYSQL_ERROR = "Nie udało się nawiązać połączenia z $dbhost.";
  9. return false;
  10. }
  11. elseif (empty($dbhost) && !mysql_select_db($default_dbname)) {
  12. $MYSQL_ERRNO = mysql_errno();
  13. $MYSQL_ERROR = mysql_error();
  14. return false;
  15. }
  16. else {
  17. return $link_id;
  18. }
  19. }
  20. ?>

Teraz wykonujemy zadanie:
  1. <?php
  2.  
  3. $db_cnn = mysql_connect("localhost","root","xxx") or die("błąd połączenia");
  4. mysql_select_db("sample_db", $db_cnn) or die("błąd przy wyborze bazy");
  5.  
  6. $query = "SELECT * FROM sample_db";
  7. $result = mysql_query($query, $db_cnn);
  8.  
  9. if(!$result) {
  10.  die("błąd");
  11. }
  12. else {
  13.  
  14. while($query_data = mysql_fetch_array($result)) {
  15. echo ",".$query_data["userid"]."' znany jako'".$query_data["username"]."<P>";
  16.  }
  17.  
  18. }
  19. ?>
krzychu0808
sam napis błąd wyskakuje

Zrobiłem tak:
  1. <?php
  2.  
  3. $db_cnn = mysql_connect("localhost","root","xxxxxxxx") or die("błąd połączenia");
  4. mysql_select_db("sample_db", $db_cnn) or die("błąd przy wyborze bazy");
  5.  
  6. $query = "SELECT * FROM sample_db";
  7. $result = mysql_query($query, $db_cnn);
  8.  
  9. if(!$result) {
  10.  die("błąd");
  11. }
  12. else {
  13.  
  14. while($query_data = mysql_fetch_array($result)) {
  15. echo ",".$query_data["userid"]."' znany jako'".$query_data["username"]."<P>";
  16.  }
  17.  
  18. }
  19. ?>
phpion
Zmień:
  1. <?php
  2. $query = "SELECT * FROM sample_db";
  3. ?>

na:
  1. <?php
  2. $query = "SELECT * FROM user";
  3. ?>
krzychu0808
dobra wielkie dzięki.. jak będę dalej miał problemy to zrobie temat smile.gif pozdrawiam
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.