Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nie wykonuje się zapytanie SQL i nie zwraca błędu
Forum PHP.pl > Forum > Przedszkole
rozny
Witam,

popełniłem taki oto kod, niestety wykonuje on wyłącznie dwa pierwsze zapytania do bazy danych, natomiast nie wykonuje trzeciego zapytania (dodanie kodu rabatowego do bazy danych).

  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. if (isset($_POST['sub_email'])) {
  6.  
  7. $email = trim(htmlspecialchars($_POST['sub_email']));
  8.  
  9. $db_host = '***';
  10. $db_name = '****';
  11. $db_login = '*****';
  12. $db_passwd = '******';
  13.  
  14.  
  15. try {
  16.  
  17. $conn = new PDO('mysql:host=' . $db_host . ';dbname=' . $db_name, $db_login, $db_passwd);
  18. $conn -> exec('SET NAMES utf8');
  19.  
  20. }
  21.  
  22. catch(PDOException $e) {
  23.  
  24. die ("Błąd połączenia z bazą!: " . $e->getMessage() . "<br/>");
  25.  
  26. }
  27.  
  28. $query = 'SELECT * FROM `sklep_newsletter` WHERE email = :email';
  29.  
  30. $stmt = $conn -> prepare($query);
  31.  
  32. $stmt -> bindParam(':email', $email, PDO::PARAM_STR);
  33.  
  34. try {
  35.  
  36. $stmt -> execute();
  37.  
  38. }
  39.  
  40. catch(PDOException $e) {
  41.  
  42. die ($e->getMessage());
  43.  
  44. }
  45.  
  46. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  47.  
  48. if ($row > 0) {
  49.  
  50. echo 'exists';
  51.  
  52. }
  53.  
  54. else {
  55.  
  56. $query = 'INSERT INTO `sklep_newsletter` (email) VALUES (:email)';
  57.  
  58. $stmt = $conn -> prepare($query);
  59.  
  60. $stmt -> bindParam(':email', $email, PDO::PARAM_STR);
  61.  
  62. try {
  63.  
  64. if ($stmt -> execute()) {
  65.  
  66. $email_status = 1;
  67. $stmt -> closeCursor();
  68.  
  69. }
  70.  
  71. else {
  72.  
  73. $email_status = 0;
  74. $stmt -> closeCursor();
  75.  
  76. }
  77.  
  78. }
  79.  
  80. catch(PDOException $e) {
  81.  
  82. die ($e->getMessage());
  83.  
  84. }
  85.  
  86. $kod = md5($email);
  87. $wartosc_znizki = 10.00;
  88. $waznosc_od = date("Y-m-d");
  89. $waznosc_do = "0000-00-00";
  90. $wartosc_zam_min = 0;
  91. $wartosc_zam_max = 0;
  92. $id_waluty = 1;
  93. $ilosc_produktow_min = 0;
  94. $ilosc_produktow_max = 0;
  95. $jednorazowy = 1;
  96. $aktywny = 1;
  97.  
  98. $query = 'INSERT INTO `sklep_kody_rabatowe` (nazwa, kod, wartosc_znizki, waznosc_od, waznosc_do wartosc_zam_min, wartosc_zam_max, id_waluty, ilosc_produktow_min, ilosc_produktow_max, jednorazowy, aktywny) VALUES (:nazwa, :kod, :wartosc_znizki, :waznosc_od, :waznosc_do, :wartosc_zam_min, :wartosc_zam_max, :id_waluty, :ilosc_produktow_min, :ilosc_produktow_max, :jednorazowy, :aktywny)';
  99.  
  100. $stmt = $conn -> prepare($query);
  101.  
  102. $stmt -> bindParam(':nazwa', $email, PDO::PARAM_STR);
  103. $stmt -> bindParam(':kod', $kod, PDO::PARAM_STR);
  104. $stmt -> bindParam(':wartosc_znizki', $wartosc_znizki, PDO::PARAM_INT);
  105. $stmt -> bindParam(':waznosc_od', $waznosc_od, PDO::PARAM_STR);
  106. $stmt -> bindParam(':waznosc_do', $waznosc_do, PDO::PARAM_STR);
  107. $stmt -> bindParam(':wartosc_zam_min', $wartosc_zam_min, PDO::PARAM_INT);
  108. $stmt -> bindParam(':wartosc_zam_max', $wartosc_zam_max, PDO::PARAM_INT);
  109. $stmt -> bindParam(':id_waluty', $id_waluty, PDO::PARAM_INT);
  110. $stmt -> bindParam(':ilosc_produktow_min', $ilosc_produktow_min, PDO::PARAM_INT);
  111. $stmt -> bindParam(':ilosc_produktow_max', $ilosc_produktow_max, PDO::PARAM_INT);
  112. $stmt -> bindParam(':jednorazowy', $jednorazowy, PDO::PARAM_INT);
  113. $stmt -> bindParam(':aktywny', $aktywny, PDO::PARAM_INT);
  114.  
  115. try {
  116.  
  117. if ($stmt -> execute()) {
  118.  
  119. $subject = 'Witaj w Newsletterze - odbierz swój kupon rabatowy.';
  120. $message = 'Bla Bla Bla Twój kupon to: ' . $kod;
  121. $headers[] = 'MIME-Version: 1.0';
  122. $headers[] = 'Content-type: text/html; charset=UTF-8';
  123. $headers[] = 'From: Sklep ***.com <sklep@***.com>';
  124.  
  125. mail($email, $subject, $message, implode("\r\n", $headers));
  126.  
  127. $kod_status = 1;
  128.  
  129. }
  130.  
  131. else {
  132.  
  133. $kod_status = 0;
  134.  
  135. }
  136.  
  137. }
  138.  
  139. catch(PDOException $e) {
  140.  
  141. die ($e->getMessage());
  142.  
  143. }
  144.  
  145. if ($email_status == 1 && $kod_status == 1) {
  146.  
  147. echo 'Dodano email i wysłano kod';
  148.  
  149. }
  150.  
  151. if ($email_status == 1 && $kod_status == 0) {
  152.  
  153. echo 'Dodano email i nie wysłano kodu ';
  154. print_r($conn->errorInfo());
  155.  
  156. }
  157.  
  158. if ($email_status == 0 && $kod_status == 1) {
  159.  
  160. echo 'Nie dodano emaila i wysłano kod';
  161.  
  162. }
  163.  
  164. if ($email_status == 0 && $kod_status == 0) {
  165.  
  166. echo 'Nie dodano emaila i nie wysłano kodu';
  167.  
  168. }
  169.  
  170.  
  171.  
  172.  
  173. }
  174.  
  175. }
  176.  
  177. else {
  178.  
  179. echo 'error';
  180.  
  181. }
  182.  
  183. ?>


Druk kodu błędu zwraca tablicę:

  1. (
  2. [0] => 00000
  3. [1] =>
  4. [2] =>
  5. )


Także nic mi to kompletnie nie mówi. Nie wypluwa też żadnych innych błędów (parse, sql), dlatego nie widzę dlaczego nie wykonuje się zapytanie do bazy danych. Proszę o pomoc w rozwiązaniu problemu.

Pozdrawiam
nospor
bledu ci nie wyswietla bo nie ustawiles w pdo by rzucal wyjatkami w razie bledow...

Co do bledu to na pewno jeden jest tu
waznosc_do wartosc_zam_min
no naprawde ciezko sprawdzic skladnie zapytania samemu? tongue.gif
rozny
Im dłużej się gapisz w kod tym trudniej wyłuskać takie bzdety jak brak przecinka wink.gif

Dzięki. Do zamknięcia smile.gif
nospor
Po to wlacza sie wyswietlanie bledow jak ktos jest slepy tongue.gif W przypadku PDO najlepiej wlaczyc te wyjatki o ktorych zapomniales.
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.