Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Nie wrzuca wpisów do bazy danych
Forum PHP.pl > Forum > Przedszkole
Outside
Mam taki kod

  1. <?php
  2. // Utworzenie krótkich nazw zmiennych
  3. $nick = htmlspecialchars(trim($_POST['nick']));
  4. $komentarz = htmlspecialchars(trim($_POST['komentarz']));
  5. $ip = $_SERVER['REMOTE_ADDR'];
  6. $data = date('H:i, j F Y');
  7.  
  8. if(empty($nick))
  9. {
  10. $nick = 'Gość';
  11. }
  12.  
  13.  
  14. if(empty($komentarz))
  15. {
  16. echo "Proszę o wpisanie komentarza";
  17. }
  18.  
  19. // Połączenie z bazą danych
  20. $db = new mysqli('localhost', 'root', 'root', 'ksiega');
  21. if (mysqli_connect_errno())
  22. {
  23. echo 'Błąd połączenia z bazą danych';
  24. }
  25.  
  26.  
  27.  
  28. $zapytanie = "insert into ksiega values ('".$nick."', '".$komentarz."', '".$ip."')";
  29. $dodaj = $db->query($zapytanie);
  30.  
  31. if ($dodaj) {
  32. echo "Wpis został dodany.";
  33. }
  34. else {
  35. echo "Wystąpił błąd. Spróbuj później.";
  36. }
  37. $db->close();
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44. ?>


Baza danych jest zrobiona w taki sposób
  1. CREATE TABLE IF NOT EXISTS `ksiega` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nick` varchar(50) NOT NULL,
  4. `komentarz` text NOT NULL,
  5. `ip` varchar(30) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


I nie chce dodawać wpisów, ciągle pisze, że wystąpił błąd. Co może być nie tak?
Turson
  1. $zapytanie = "insert into ksiega values ('".$nick."', '".$komentarz."', '".$ip."')";
  2. $dodaj = $db->query($zapytanie);

W przypadku SELECT używa się "query", a w UPDATE/SELECT "exec"
Outside
Nie za bardzo rozumiem, mam zrobić coś takiego?
  1. $zapytanie = "insert into ksiega values ('".$nick."', '".$komentarz."', '".$ip."')";
  2. $dodaj = $db->exec($zapytanie);
Turson
  1. $db->exec("INSERT INTO ksiega VALUES('$nick', '$komentarz', '$ip'");
Outside
Teraz wyskakuje błąd
Call to undefined method mysqli::exec()
szukałem w internecie to gdzieś pisało, że w php.ini moze byc wyłączony, ale jest włączony.
Turson
Pomyliłem się, mysłałem że korzystasz z PDO smile.gif

Wywołaj zmienne, które umieszczasz do bazy i sprawdź co zawierają
Outside
  1. echo $nick;
  2. echo $komentarz;
  3. echo $ip;


patryk test 127.0.0.1

działa.
Połączenie z bazą danych następuje, nie mam pojecia dlaczego nie chce dodać
ber32
Witam

  1. $db->real_query('INSERT INTO ksiega ('nick', 'komentarz', 'ip') VALUES ('".$nick."', '".$komentarz."', '".$ip."')');

może tak
Outside
@ber32
zrobiłem tak jak pisałeś i też nic z tego

Dodam, że mam inny kod z dodawaniem książek do bazy danych i działa.

  1. <?php
  2. //utworzenie krótkich nazw zmiennych
  3. $isbn=$_POST['isbn'];
  4. $autor=$_POST['autor'];
  5. $tytul=$_POST['tytul'];
  6. $cena=$_POST['cena'];
  7.  
  8. if (!$isbn || !$autor || !$tytul || !$cena) {
  9. echo "Nie podano wszystkich potrzebnych danych.<br />".
  10. "Wróć do poprzedniej strony i spróbuj ponownie.";
  11. }
  12. $isbn = addslashes($isbn);
  13. $autor = addslashes($autor);
  14. $tytul = addslashes($tytul);
  15. $cena = doubleval($cena);
  16. }
  17. @ $db = new mysqli('localhost', 'ksiazkorama', 'ksiazkorama', 'ksiazki');
  18.  
  19. if (mysqli_connect_errno()) {
  20. echo "Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.";
  21. }
  22.  
  23. $zapytanie = "insert into ksiazki values ('".$isbn."', '".$autor."', '".$tytul."', '".$cena."')";
  24. $wynik = $db->query($zapytanie);
  25.  
  26. if ($wynik) {
  27. echo $db->affected_rows." Książka zapisana do bazy.";
  28. } else {
  29. echo "Wystąpił błąd. Książka nie została dodana do bazy. " . mysql_error();
  30. }
  31.  
  32. $db->close();
  33. ?>


Problem rozwiązany, pisałem z małych liter insert into, ale teraz pojawił się jeszcze jeden.
Baza danych działa dopóki nie wrzucę do niej ID wpisu, co może być nie tak?
całość wygląda tak
  1. CREATE TABLE IF NOT EXISTS `ksiega` (
  2. `nick` varchar(50) NOT NULL,
  3. `komentarz` text NOT NULL,
  4. `ip` varchar(30) NOT NULL,
  5. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


rowniez rozwiazane
wpisywałem
$zapytanie = "INSERT INTO ksiega VALUES ('NULL', '".$nick."', '".$komentarz."', '".$ip."')";
A powinno być samo NULL bez apostrofów. Amatorskie błedy, na które straciłem 6 godzin
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.