Witam,
Mam pytanie, dlaczego poniższy skrypt nie dodaje mi do bazy. Zwykle dodaje, ale nawet dla pojedynczego pola, też nie chce dodać. Oto kod:
<?php
require_once(‘db/dbc.php’);
if(isset($_POST[‘submit’])){
$username = $_POST[‘username’];
$group = implode(’ , ’ , $_POST[‘group’]);
Skoro nie jest poprawnie, to dlaczego na filmie widać, że działa dodawanie a u mnie nie? Struktura tabeli, to trzy pola. id z int, kolejne dwa pola(username i group) to varchar po 100 i 256.
Zastanawia mnie group w zapytaniu. Używanie słów kluczowych MySQL jako nazw pól jest bardzo ryzykowne.
Zmień: INSERT INTO users_group (username, group) VALUES
Na: INSERT INTO users_group (username, group) VALUES
Edycja: nie widać tego, ale username i group jest w odwróconym apostrofie - znak na przycisku z tyldą (obok 1).
Tutaj podgląd kodu: https://pastebin.com/4qM8xZzu
Niepoprawny jest sposób deklaracji stringów, a nie dodawania.
Podejrzyj w ogóle zapytanie jak wygląda przed wysłaniem i sprawdź błędy, uważam, że one najwięcej Ci powiedzą w czym jest problem. Tutaj masz przykład: http://php.net/manual/pl/mysqli.query.php.
Dodatkowo nazwy kolumn jednak zapisywałbym w odwróconych apostrofach, tak jak radzi @anon78384242
Zanim założyłem temat, to sprawdzałem po Values z tyldami, również z zapisem takim: " ‘.$group.’ " i też nie działa. Najbardziej mi zależy, aby mi dodawało używając bind_param. Tylko dlaczego na filmie, działa dodawanie a u mnie nie? Kiedy użyłem dodawania bez bind param i dałem echo $sql = $db->affected_rows;, to w echo miałem -1.
Zależy aby mając zmieną w tablicy, można dodać 4 kategorie do jednego pola, dlatego mam w każdym inpucie group[ ].
Update!
Problem rozwiązany. Okazało się, że nazwa kolumny group była podświetlona na niebiesko a nie na ciemny zielony (użyłem programu HeidiSQL). I teraz w obu zapytaniach działa dodawanie.