Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem z PDO
Hazik
post 14.05.2017, 19:59:48
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Hej przerabiam aktualnie skrypt na PDO. Niestety po przeróbce nie działa. Ktoś może pomóc?

Przed zmianą:
  1. <?php
  2.  
  3.  
  4. /*Połączenie z bazą danych*/
  5.  
  6. $dzisiaj = date("Y-m-d");
  7. $godzina = "11:00";
  8.  
  9.  
  10. $connection = @mysql_connect('localhost', 'login', 'pass')
  11. or die('Brak połączenia z serwerem MySQL');
  12. $db = @mysql_select_db('db', $connection)
  13. or die('Nie mogę połączyć się z bazą danych');
  14.  
  15.  
  16. $wynik = mysql_query("SELECT * FROM tabela WHERE `tabela`.`data` = '".$dzisiaj."' AND `tabela`.`godzina` = '".$godzina."'")
  17.  
  18. echo $dzisiaj;
  19.  
  20. if(mysql_num_rows($wynik) > 0) {
  21. // akcja po znalezieniu dodawanego rekordu w tabeli
  22. echo 'taki rekord juz jest';
  23.  
  24. } else {
  25. // akcja po stwierdzeniu że rekordy w tabeli nie ma
  26. echo ' rekord jest wolny';
  27.  
  28. }
  29.  
  30.  
  31.  
  32. ?>




Po zmianie:
  1. <?php
  2.  
  3.  
  4. /*Połączenie z bazą danych*/
  5.  
  6. $dzisiaj = date("Y-m-d");
  7. $godzina = "11:00";
  8. echo $dzisiaj;
  9. try
  10. {
  11. if($_SERVER['REQUEST_METHOD'] == 'POST')
  12. {
  13. $pdo = new PDO('mysql:host=localhost;dbname=db', 'login', 'pass');
  14. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  15.  
  16. $stmt = $pdo -> query('SELECT * FROM tabela WHERE `tabela`.`data` = '.$dzisiaj.' AND `tabela`.`godzina` = '.$godzina.'');
  17. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  18.  
  19.  
  20.  
  21. if(! $row) {
  22. // akcja po znalezieniu dodawanego rekordu w tabeli
  23. echo 'taki rekord juz jest';
  24.  
  25. } else {
  26. // akcja po stwierdzeniu że rekordy w tabeli nie ma
  27. echo 'rekord wolny';
  28. }}}
  29. catch(PDOException $e)
  30. {
  31. echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage();
  32. }
  33.  
  34.  
  35.  
  36. ?>



Go to the top of the page
+Quote Post
Kshyhoo
post 14.05.2017, 20:11:29
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(Hazik @ 14.05.2017, 20:59:48 ) *
Niestety po przeróbce nie działa.

Rozwiń...


--------------------
Go to the top of the page
+Quote Post
Hazik
post 14.05.2017, 20:13:11
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Nie wyświetla żadnego błędu, nie wyświetla też żadnego komunikatu. Pokazuje tylko datę.
Go to the top of the page
+Quote Post
trueblue
post 14.05.2017, 20:30:02
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


W drugiej wersji sprawdzasz istnienie rekordu pod warunkiem wywołania skryptu metodą POST.


--------------------
Go to the top of the page
+Quote Post
Hazik
post 14.05.2017, 20:53:51
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Po usunięciu POST otrzymałem następujący błąd:
Wystapil blad biblioteki PDO: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':00' at line 1
Go to the top of the page
+Quote Post
trueblue
post 14.05.2017, 21:02:31
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


No to porównaj jak tworzyłeś zapytania w obydwu wersjach.


--------------------
Go to the top of the page
+Quote Post
Hazik
post 14.05.2017, 21:09:24
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Cytat(trueblue @ 14.05.2017, 22:02:31 ) *
No to porównaj jak tworzyłeś zapytania w obydwu wersjach.


Porównywałem już wiele razy i dalej nie mam rozwiązania. Jakaś podpowiedź?
Go to the top of the page
+Quote Post
nospor
post 14.05.2017, 21:46:17
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W pierwszzej wersji date i godzine masz w ciapkach. W drugiej nie... hm... ciekawe czy to moze powodowac blad.... tongue.gif



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Hazik
post 14.05.2017, 21:50:48
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Ok poprawiłem błąd i dodałem kolejną funkcję. Tu wywala kolejny błąd:(
2017-05-14rekord wolnyWystapil blad biblioteki PDO: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':'Klient', :'2017-05-14', ' at line 2

  1. <?php
  2.  
  3.  
  4. /*Połączenie z bazą danych*/
  5.  
  6. $dzisiaj = date("Y-m-d");
  7. $godzina = "17:00";
  8.  
  9. echo $dzisiaj;
  10. try
  11. {
  12.  
  13. $pdo = new PDO('mysql:host=localhost;dbname=db', 'login', 'pass');
  14. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  15.  
  16. $stmt = $pdo -> query('SELECT *FROM tabelaWHERE `tabela`.`data` = "'.$dzisiaj.'" AND `tabela`.`godzina` = "'.$godzina.'"');
  17. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  18.  
  19.  
  20.  
  21. if($row >0) {
  22. // akcja po znalezieniu dodawanego rekordu w tabeli
  23. echo 'taki rekord juz jest';
  24.  
  25. } else {
  26. // akcja po stwierdzeniu że rekordy w tabeli nie ma
  27. echo 'rekord wolny';
  28.  
  29.  
  30. $stmt = $pdo -> prepare("INSERT INTO tabela (klient, data, godzina) VALUES(
  31. :?,
  32. :?,
  33. :?,
  34. )"); // 1
  35. $stmt->execute(array(
  36. "Klient",
  37. date("Y-m-d"),
  38. "17:00",
  39. ));
  40.  
  41. }}
  42. catch(PDOException $e)
  43. {
  44. echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage();
  45. }
  46.  
  47.  
  48.  
  49. ?>
  50.  



Go to the top of the page
+Quote Post
nospor
post 14.05.2017, 21:54:01
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak uzywasz ? to bez :.
: dajesz gdy uzywasz nazw.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Hazik
post 14.05.2017, 21:58:04
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Dziękuję, niestety po zmianie w dalszym ciągu:


2017-05-14rekord wolnyWystapil blad biblioteki PDO: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 5
Go to the top of the page
+Quote Post
nospor
post 14.05.2017, 22:02:08
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale masz teraz inny blad, no nie?
Ostatni znak zapytania ma zbedny przecinek.

Ja rozumiem ze jest juz pozna pora, ale skup sie troche. kazda pierde mam palcem pokazywac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Hazik
post 14.05.2017, 22:03:52
Post #13





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2017

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


Ok teraz rozumiem zasadę łapania wyjątków. Myślałem, że mam jakiś strasznie poważny błąd. Teraz już wiem, czego szukać. Dzięki wielkie:)
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:25