Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Brak zapisu do bazy
lustfingers
post
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 5
Dołączył: 18.03.2015

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


Witam, mam 3 pliki a.php, b.php i c.php

Plik a.php ma formularz z action do pliku b.php gdzie najpierw chce uzyskać zapis do bazy oraz następnie użyć tych samych danych do kolejnego formularza który jest w pliku b.php dane sie ładnie przesyłają z pliku a.php do b.php tylko nie następuje zapis.

Kod zapisu z pliku b.php

  1. <?php
  2. ini_set('display_errors', '1');
  3. try
  4. {
  5. $pdo = new PDO('mysql:host=localhost;dbname=somename', 'someuser', 'somepass');
  6. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  7. $pdo->exec('SET NAMES "utf8"');
  8. }
  9. catch (PDOException $e)
  10. {
  11. $error = 'Nie można nawiązać połączenia z serwerem bazy danych.';
  12. include 'error.html.php';
  13. exit();
  14. }
  15.  
  16. if (isset($_POST['number']) OR isset($_POST['name']) OR isset($_POST['purpose']) OR isset($_POST['clientname']) OR isset($_POST['weight']) OR isset($_POST['datefrom']) OR isset($_POST['dateto']))
  17. {
  18. try
  19. {
  20. echo $_POST['date'];
  21. $sql = 'CREATE TABLE IF NOT EXISTS `table1` (
  22. `id_receipts` INT NOT NULL AUTO_INCREMENT,
  23. `number` TEXT,
  24. `name` TEXT,
  25. `purpose` TEXT,
  26. `clientname` TEXT,
  27. `weight` float,
  28. `datefrom` DATE,
  29. `dateto` DATE,
  30. `date` DATE
  31. )';
  32. $sql .= 'INSERT INTO `table1` SET
  33. number = '.$_POST['number'].',
  34. name = '.$_POST['name'].',
  35. purpose = '.$_POST['purpose'].',
  36. clientname = '.$_POST['clientname'].',
  37. weight = '.$_POST['weight'].',
  38. datefrom = '.$_POST['datefrom'].',
  39. dateto = '.$_POST['dateto'].',
  40. date = '.$_POST['date'].'';
  41. $s = $pdo->prepare($sql);
  42. $s->execute();
  43. }
  44. catch (PDOException $e)
  45. {
  46. $error = 'Błąd przy zapisie: ' . $e->getMessage();
  47. include 'error.html.php';
  48. exit();
  49. }
  50.  
  51. header('Location: .');
  52. exit();
  53. }
  54.  
  55. ?>


W pliku b.php poniżej tego kodu jest kolejny formularz z action do pliku c.php natomiast po przejściu z a.php do b.php jest biała strona bez żadnego komunikatu błędu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lustfingers
post
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 5
Dołączył: 18.03.2015

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


Już tłumacze co mam i co chcę osiągnąć oraz dlaczego.

Kod wygląda w skrócie tak:

  1.  
  2. <?php
  3. ini_set('display_errors', '1');
  4. try
  5. {
  6. $pdo = new PDO('mysql:host=localhost;dbname=somename', 'someuser', 'somepass');
  7. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  8. $pdo->exec('SET NAMES "utf8"');
  9. }
  10. catch (PDOException $e)
  11. {
  12. $error = 'Nie można nawiązać połączenia z serwerem bazy danych.';
  13. include 'error.html.php';
  14. exit();
  15. }
  16.  
  17. if (isset($_POST['number']))
  18. {
  19. try
  20. {
  21. echo $_POST['date'];
  22. $sql = 'CREATE TABLE IF NOT EXISTS `table1` (
  23. `id_receipts` INT NOT NULL AUTO_INCREMENT,
  24. `number` TEXT,
  25. )';
  26. $sql .= 'INSERT INTO `table1` SET
  27. number = '.$_POST['number'].';
  28. $s = $pdo->prepare($sql);
  29. $s->execute();
  30. }
  31. catch (PDOException $e)
  32. {
  33. $error = 'Błąd przy zapisie: ' . $e->getMessage();
  34. include 'error.html.php';
  35. exit();
  36. }
  37.  
  38. header('Location: .');
  39. exit();
  40. }
  41.  
  42. if (isset($_POST['othernumber']))
  43. {
  44. try
  45. {
  46. echo $_POST['date'];
  47. $sql2 = 'CREATE TABLE IF NOT EXISTS `table2` (
  48. `id` INT NOT NULL AUTO_INCREMENT,
  49. `othernumber` TEXT,
  50. )';
  51. $sql2 .= 'INSERT INTO `table2` SET
  52. number = '.$_POST['number'].',
  53. id = '.$zmienna_pobierajaca_id;
  54. $s2 = $pdo->prepare($sql2);
  55. $s2->execute();
  56. }
  57. catch (PDOException $e)
  58. {
  59. $error = 'Błąd przy zapisie: ' . $e->getMessage();
  60. include 'error.html.php';
  61. exit();
  62. }
  63.  
  64. header('Location: .');
  65. exit();
  66. }
  67.  
  68. ?>

Teraz do tego kodu przed zapytaniem

  1. INSERT INTO `table2` SET number = '.$_POST['number'].', id = '.$zmienna_pobierajaca_id;


chcę umieścić

  1. sql3 = "SELECT id_receipts FROM table1 ORDER BY id_receipts DESC LIMIT 1";
  2. $sth = $pdo->prepare($sql3);
  3. $sth->execute();
  4. $result = $sth->fetch();
  5. $zmienna_pobierajaca_id = $result[0];


Niestety nie dostaje żadnych błędów tylko biała strona, korzystam z wampa, czasami w jego logach pojawia się błąd:

General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.' in C:\wamp\www\some\c.php:69

Sama zmiana z fetch na fetchAll nic nie daje natomiast linia 69 to jest zapytanie: sql3 = "SELECT id_receipts FROM table1 ORDER BY id_receipts DESC LIMIT 1";

Ten post edytował lustfingers 28.02.2017, 19:11:03
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 13:55