Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z wykonaniem zapytania
Forum PHP.pl > Forum > Przedszkole
Mateusz02
Hej, jestem tu nowy, więc przepraszam, jeśli rozwiązanie problemu jest już gdzieś w sieci, szukałem, ale to co znalazłem nie pomogło.
Poniżej wklejam kod pliku index.php:

  1. <xml version="1.0" encoding="iso-8859-2">
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <head>
  5. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  6. <meta name="Description" content=" [wstaw tu opis strony] " />
  7. <meta name="Keywords" content=" [wstaw tu slowa kluczowe] " />
  8. <meta name="Author" content=" [dane autora] " />
  9. <meta name="Generator" content="kED" />
  10.  
  11. <title> Moja strona </title>
  12.  
  13. <link rel="stylesheet" href=" style.css " type="text/css" />
  14. </head>
  15. <body>
  16.  
  17. <div id = "top">
  18. Nagłówek
  19. </div>
  20.  
  21. <div id = "content">
  22.  
  23. <div id = "content-left">
  24. BUM
  25. </div>
  26.  
  27. <div id = "content-right">
  28.  
  29. <?php
  30. $db_obj = new mysqli("localhost","Mate","dom","ludzie");
  31. if($db_obj->connect_errno)
  32. {
  33. echo 'Błąd podczas próby połączenia z Bazą Danych ... <br />';
  34. }
  35. else
  36. {
  37. echo 'Połączenie z Bazą zostało nawiązane ... <br />';
  38. }
  39.  
  40.  
  41. $query = 'SELECT * FROM człowiek';
  42.  
  43. if($result = $db_obj->query($query))
  44. {
  45. ?>
  46.  
  47. <table>
  48.  
  49. <?php
  50. while($row = $result->fetch_row())
  51. {
  52. echo "<tr>";
  53. echo "<td>$row[0]</td>";
  54. echo "<td>$row[1]</td>";
  55. echo "<td>$row[2]</td>";
  56. echo "</tr>";
  57. }
  58. ?>
  59. </table>
  60.  
  61. <?php
  62. }
  63. else
  64. {
  65. echo 'Wystąpił błąd: nieprawidłowe zapytanie ...<br />';
  66. }
  67.  
  68. echo mysql_error($db_obj);
  69.  
  70. if ($db_obj->close())
  71. {
  72. echo 'Połączenie z serwerem MySQL zostało zamknięte ... <br />';
  73. }
  74. else
  75. {
  76. echo 'Błąd podczas zamykania połączenia z BD ...<br />';
  77. }
  78.  
  79. ?>
  80. </table>
  81. </div>
  82.  
  83. </div>
  84.  
  85. <div id = "bot">
  86. Stopka
  87. </div>
  88.  
  89. </body>
  90. </html>

A poniżej to co wyświetla się w najważniejszym oknie, czyli odczyt kilku wierszy z bazy danych (w PHPMyAdmin zapytanie działa bez problemu):

Połączenie z Bazą zostało nawiązane ...
Wystąpił błąd: nieprawidłowe zapytanie ...

Warning: mysql_error() expects parameter 1 to be resource, object given in C:\WebServ\httpd\index.php on line 72
Połączenie z serwerem MySQL zostało zamknięte ...

Gdzie jest problem?
Kshyhoo
Witamy na Forum. Zapoznaj się z panującymi zasadami, by uniknąć blokady wątków. Przenoszę.

Masz w bazie tabelę człowiek?
Mateusz02
Umie ktoś pomóc? Naprawdę nie wiem, co się dzieje, treść kodu jest przepisana z książki i mimo to, zapytanie generuje błąd. Gdzie tkwi problem? W konfiguracji php / mySql?
Połączenie z bazą jak widać nawiązywane jest bez problemu, a jednak zapytanie już nie. Instrukcja SELECT jest tak prosta, że nie ma prawa być źle sformułowana, o co chodzi w generowanym błędzie? Nie umiem go zrozumieć. Pomocy. Jak przeskoczę ten problemik, dalej pójdzie jak z górki.
Kshyhoo
A odpowiedziałeś na moje pytanie?
Mateusz02
Tak, dokładnie o tej samej nazwie.
Raito
Łączysz się z mysqli, a dajesz mysql_error.
Mateusz02
Cytat(Raito @ 8.04.2015, 19:02:33 ) *
Łączysz się z mysqli, a dajesz mysql_error.


Masz racje, szukałem odpowiedzi na różnych forach, nie zwróciłem na to nazwet uwagi. Ale to i tak nie rozwiązuje problemu.
Raito
A jaki jest problem? Dalej ten sam błąd?
Mateusz02
Zamieniłem błędną linię na prawidłową (o następującej treści):
printf("Connect failed: %s\n", $db_obj->error);

Teraz wyświetla się konkretny komunikat:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'łowiek' at line 1

Dalej jednak nie wiem o jaki błąd w składni może chodzić, a już w ogóle nie wiem co oznacza "' łowiek' " - nie mam takiej literówki ani w bazie, anie w skrypcie. nie wiem, skąd się to bierze. Co powinienem zrobić?
Kshyhoo
Zmień nazwę tablemi na bez polskich znaków... analogicznie w skrypcie wink.gif
Mateusz02
Właśnie o tym pomyślałem, zaraz to zrobię, bez względu jednak na wynik chciałbym też wiedzieć, co należy zrobić, żeby działały polskie znaki w nazwach tabel (bo trudno mi uwierzyć w to, że to niemożliwe)? Chodzi o kodowanie? Powinienem użyć jakiejś funkcji? Czy w ogóle zapisywaćdane w DB stosując inne kodowanie?
Kshyhoo
Cytat
Ogólnie przyjeło się iż nazwy tabel nie zawierają polskich znaków, spacji i innych udziwnień.
Mateusz02
Dziękuję za cenną pomoc, teraz już ruszam naukę z kopyta, mam nadzieję, że kolejnych pytań nie będę zadawał w dziale "piaskownica" smile.gif

Po zmienieniu nazw na mniej polskie wszystko śmiga zgodnie z oczekiwaniami.

Pozdrawiam.
Kshyhoo
Cytat(Mateusz02 @ 8.04.2015, 19:31:45 ) *
mam nadzieję, że kolejnych pytań nie będę zadawał w dziale "piaskownica" smile.gif

Powodzenia wink.gif

Możesz sprawdzić sobie, w jaki sposób PHP traktuje Twoje zapytanie umieszczając je w ECHO smile.gif
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.