Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z dodawaniem rekordów do bazy danych
Forum PHP.pl > Forum > Bazy danych
easy332
Witam mam problem z dodaniem rekordu do bazy danych.

<?php

$tytul=$_POST['tytul'];

if(!$tytul){
echo "Nie podano wszystkich potrzebnych danych.";
exit;
}

if (!get_magic_quotes_gpc()){
$tytul = addslashes($tytul);
}

@ $db = new mysqli('localhost', 'root', 'root', 'ksiazka_kz');

if (mysqli_connect_errno()){
echo "Błąd: Połączenie z bazą danych nie powiodło się.";
exit;
}

$zapytanie = "INSERT INTO ksiazki VALUES ('".$tytul."')";
$wynik = $db->query($zapytanie);

if ($wynik){
echo $db->affected_rows."książka zapisana do bazy.";
} else {
echo "Wystąpił błąd";
}

$db->close();


?>

Po wypełnieniu formularza i wykonaniu skryptu dostaje komunikat błędu: echo "Wystąpił błąd"; oraz żaden rekord nie zostaje dodany do bazy danych.
Czy ktoś może mi powiedzieć co może być powodem? przykład jest z książki.




mokry
Dodaj do kodu zwracany błąd i napisz, co Ci wypluło:

  1. if ($wynik) {
  2. echo $db->affected_rows . "książka zapisana do bazy.";
  3. }
  4. else {
  5. echo "Wystąpił błąd: ".$db->error;
  6. }
easy332
Column count doesn't match value count at row 1
mokry
Chodzi o to, że Twoja tabela, do której dodajesz rekordy posiada więcej niż jedno pole. Ty dodając nowy rekord do bazy danycch, w zapytaniu po "VALUES (...)" w nawiasie podajesz tylko jedną kolumnę.
Jeżeli chcesz, aby rekord poprawnie dodał się do bazy danych, musisz podać tyle wartości, ile jest zdefiniowanych w bazie danych, czyli "VALUES ('', '', 'tytul ksiazki', '')". W tym przypadku tabela ma 4 kolumny, a 3 kolumna jest nazwa i tam chcesz wstawić przekazaną wartość.

Możesz też zmodyfikować zapytanie wpisując np. (jeżeli kolumna nazywa się "tytul"):
  1. INSERT INTO ksiazki SET tytul = 'tytul ksiazki'

easy332
Dziękuję bardzo za pomoc. Problem rozwiązany.
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.