Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Błąd, Odczyt danych z bazy danych
krzychu0808
post
Post #1





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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. ?>


Ten post edytował krzychu0808 19.07.2008, 15:21:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
grzegorz_m
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 10.07.2008
Skąd: Łódź

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


pomyliłeś mysql_select_db z mysql_connect
Go to the top of the page
+Quote Post
krzychu0808
post
Post #3





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
grzegorz_m
post
Post #4





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 10.07.2008
Skąd: Łódź

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


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
}
Go to the top of the page
+Quote Post
Kicok
post
Post #5





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


1. Nie sprawdzasz czy udało się nawiązać połączenie z bazą danych
2. Nie sprawdzasz czy udało się wykonać zapytanie


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
Heweliusz
post
Post #6





Grupa: Zarejestrowani
Postów: 46
Pomógł: 8
Dołączył: 19.03.2007
Skąd: z nad Jarugi

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


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.


--------------------
Aktualny projekt: Nauka OOP :)
Go to the top of the page
+Quote Post
krzychu0808
post
Post #7





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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ę

Ten post edytował krzychu0808 19.07.2008, 15:58:41
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #8





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


a masz informacje w bazie? tongue.gif

Ten post edytował Piotrwusek 19.07.2008, 16:03:45
Go to the top of the page
+Quote Post
Heweliusz
post
Post #9





Grupa: Zarejestrowani
Postów: 46
Pomógł: 8
Dołączył: 19.03.2007
Skąd: z nad Jarugi

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


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.


--------------------
Aktualny projekt: Nauka OOP :)
Go to the top of the page
+Quote Post
grzegorz_m
post
Post #10





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 10.07.2008
Skąd: Łódź

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


a masz tabelę tbl_tabela?

Wyświetlaj sobie komunikaty, to będziesz wiedział na czym stoisz...
(potem je skasujesz)
Go to the top of the page
+Quote Post
krzychu0808
post
Post #11





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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ę

Ten post edytował krzychu0808 19.07.2008, 16:17:37
Go to the top of the page
+Quote Post
Heweliusz
post
Post #12





Grupa: Zarejestrowani
Postów: 46
Pomógł: 8
Dołączył: 19.03.2007
Skąd: z nad Jarugi

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


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 ?


--------------------
Aktualny projekt: Nauka OOP :)
Go to the top of the page
+Quote Post
krzychu0808
post
Post #13





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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

Ten post edytował krzychu0808 19.07.2008, 16:26:52
Go to the top of the page
+Quote Post
Heweliusz
post
Post #14





Grupa: Zarejestrowani
Postów: 46
Pomógł: 8
Dołączył: 19.03.2007
Skąd: z nad Jarugi

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


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. ?>


Ten post edytował Heweliusz 19.07.2008, 17:05:48


--------------------
Aktualny projekt: Nauka OOP :)
Go to the top of the page
+Quote Post
krzychu0808
post
Post #15





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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. ?>


Ten post edytował krzychu0808 19.07.2008, 17:33:18
Go to the top of the page
+Quote Post
phpion
post
Post #16





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zmień:
  1. <?php
  2. $query = "SELECT * FROM sample_db";
  3. ?>

na:
  1. <?php
  2. $query = "SELECT * FROM user";
  3. ?>
Go to the top of the page
+Quote Post
krzychu0808
post
Post #17





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


dobra wielkie dzięki.. jak będę dalej miał problemy to zrobie temat smile.gif pozdrawiam

Ten post edytował krzychu0808 19.07.2008, 17:46:03
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: 19.08.2025 - 12:27