Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SOLVED][MySQL][PHP]Zamina mysqli_fetch_array na POD
Forum PHP.pl > Forum > Przedszkole
jerry1984
Witam serdecznie.

Zaczołem zabawę z "PHP Data Objects". Lecz jak to z nowymi rzeczami utknołem z pewnym problemem, minaowicie nie wiem jak prześć w pętlę po tablicy wyników i wyświetlenie ich. Za pomocą mysqli nie mam problemu:

  1. <?php
  2.  
  3. include ('connection.php');
  4.  
  5.  
  6. //mySQL
  7. /*
  8. $dbc = mysqli_connect($hostname, $username, $password, $dbname);
  9.  
  10. $query = 'SELECT * FROM guitarwars';
  11. $data = mysqli_query($dbc, $query);
  12.  
  13. echo '<table>';
  14. while ($row = mysqli_fetch_array($data)) {
  15. echo '<tr><td class="scoreinfo">';
  16. echo '<span class="score">' . $row['score'] . '</span><br />';
  17. echo '<strong>Imię i nazwisko:</strong>' .$row['name'] . '<br />';
  18. echo '<strong>Data:</strong>' .$row['date'] .'</td></tr>';
  19. }
  20. echo '</table>';
  21. mysqli_close($dbc);
  22. */
  23. //to samo tylko że w PDO
  24.  
  25. try {
  26. $dbc = new PDO("mysql:host=$hostname;$dbname", $username, $password);
  27. echo 'Połączenie do bazą danych, udane';
  28. }
  29. catch(PDOException $e)
  30. {
  31. echo $e->getMessage();
  32. }
  33.  
  34. $sth = $dbc -> prepare ( "SELECT * FROM guitarwars" );
  35. $sth -> execute ();
  36. $sth -> setFetchMode(PDO::FETCH_NUM);
  37. print '<table>';
  38. while($row = $sth ->fetch()){
  39. print_r ($row);
  40. print '<tr><td class="scoreinfo">';
  41. print '<span class="score">' . $row['score'] . '</span><br />';
  42. print '<strong>Imię i nazwisko:</strong>' .$row['name'] . '<br />';
  43. print '<strong>Data:</strong>' .$row['date'] .'</td></tr>';
  44. print '</table>';
  45. }
  46. ?>


Jak widać staram się zamienić polecenia mysqli w PDO lecz mi nie wychodzi.
Błędu nie wywala tylko nie wyświetla zawartości bazy danych. Tylko co ja tu źle zrobiłem ?
Proszę o wskazówkę.
Pozdrawiam
Crozin
Ustawiłeś tryb zwracania wartości na numeryczny (FETCH_NUM), a potem odwołujesz się przez indeksy tekstowe (np. $row['score']).
jerry1984
Cytat(Crozin @ 23.02.2012, 12:04:00 ) *
Ustawiłeś tryb zwracania wartości na numeryczny (FETCH_NUM), a potem odwołujesz się przez indeksy tekstowe (np. $row['score']).


Miłeś rację, że użyłem zły tryb zwracania. Znalazłem w internecie prosty scrypt pobierania w PDO, który zmodyfikowałem do moich potrzeb
  1. <?php
  2. include ('connection.php');
  3.  
  4. $dbc = new PDO("mysql:host=$hostname;dbname=$dbname",$username,$password);
  5.  
  6. $query = "SELECT * FROM guitarwars";
  7. $q = $dbc->query($query) or die("failed!");
  8. while($row = $q->fetch(PDO::FETCH_ASSOC)){
  9. echo '<tr><td class="scoreinfo">';
  10. echo '<span class="score">' . $row['score'] . '</span><br />';
  11. echo '<strong>Imię i nazwisko:</strong>' .$row['name'] . '<br />';
  12. echo '<strong>Data:</strong>' .$row['date'] .'</td></tr>';
  13. }
  14. ?>


I działa jak powinno. Polecam PDO Tutorial pomogło dość do mojego problmemu może innym się przyda.

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.