Skocz do zawartości

Gdzie tkwi błąd?


itpawel

Rekomendowane odpowiedzi

for ($i=0; $i<2; $i++)
{

\\ tu linia 23
$sql = $db -> Prepare('INSERT INTO zapo VALUES(:id,:nr,:date,:title,:name[$i],:comments)');
\\

                $sql -> bindParam(':id', $_SESSION['user_id'], PDO::PARAM_STR);
                $sql -> bindParam(':nr', $_POST["nr"], PDO::PARAM_STR);
                $sql -> bindParam(':date', $_POST["date"], PDO::PARAM_STR);
                $sql -> bindParam(':title', $_POST["title"], PDO::PARAM_STR);
                $sql -> bindParam(":name[$i]", $_POST["name"][$i], PDO::PARAM_STR);
                $sql -> bindParam(':comments', $_POST["comments"], PDO::PARAM_STR);
$sql -> execute();
}

Wywala błąd wiecie gdzie jest błąd?
<b>Fatal error</b>:  Uncaught PDOException: 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 '[$i],?,?)' at line 1 in C:\xampp\htdocs\name.php:23
Stack trace:
#0 C:\xampp\htdocs\name.php(23): PDO-&gt;prepare('INSERT INTO zap...')

Odnośnik do komentarza
Udostępnij na innych stronach

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Chciałem osiągnąć tablicę:

id        nr        date        title        name        coments
1        1        22.02.20    Ryby         nazwa1        komentarz    
1        1        22.02.20    Ryby        nazwa1        komentarz
1        1        22.02.20    Ryby         nazwa1        komentarz    

2        2        23.02.20    Ssaki        nazwa2        komentarz2
2        2        23.02.20    Ssaki        nazwa2        komentarz2
2        2        23.02.20    Ssaki        nazwa2        komentarz2    
....   

Odnośnik do komentarza
Udostępnij na innych stronach

Zamień

$sql = $db -> Prepare('INSERT INTO zapo VALUES(:id,:nr,:date,:title,:name[$i],:comments)');

na

$sql = $db -> Prepare('INSERT INTO zapo VALUES(:id,:nr,:date,:title,:name,:comments)');

I zamiast linii:

$sql -> bindParam(":name[$i]", $_POST["name"][$i], PDO::PARAM_STR);

Dajesz:

$sql -> bindParam(":name", $_POST["name"][$i], PDO::PARAM_STR);

 

I  w tym przypadku zamiast bindParam dałbym bindValue wszędzie.

Black Friday 2024

W topx.pl nawet 50% taniej! - codziennie nowe promo!

Odnośnik do komentarza
Udostępnij na innych stronach

W Twoim wypadku możesz żywcem wstawić z tablicy

 $sql = "INSERT INTO users (name, surname, sex) VALUES (?,?,?)";
$stmt= $pdo->prepare($sql);
$stmt->execute([$name, $surname, $sex]);

https://phpdelusions.net/pdo_examples/insert

LUB > INSERTing multiple rows

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Litości ! Przecież masz jasny komunikat co jest tak  "Insert value list does not match column list. "

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności