$username = @$_POST['username'];$pass = @$_POST['password'];mysql_query("INSERT INTO `users` (`id`, `username`, `password`) VALUES (NULL, '$username', '$pass')");nbsp; [/code]
Niby się dodaje, ale tylko id(AI) ale login i pass już nie :( Nie wiem jak to naprawić. Proszę o pomoc ! Dzięki !
-- [b]Dodane 23.10.2013 (Śr) 7:56[/b] --
[code=php]echo "$username and $pass";
To mi wypisuje co wpisałem do pola login i password, więc nie wiem dlaczego się do bazy nie dodaje :-x
Nie rób tak jak powyżej bo narażasz się na SQL Injection.
Wyobraź sobie, co się stanie dla takich danych w $pass:
'); DROP DATABASE; --
Poza tym przeciętnie pamiętam dialekt MySQL, ale
http://www.w3schools.com/php/php_mysql_insert.asp
http://www.tutorialspoint.com/php/mysql_insert_php.htm
w obu tych linkach nie widzę odwróconych apostrofów.
Jeśli jednak to nie pomoże wykonaj zapytanie przez jakiegoś managera, aby otrzymać szczegółową informację o błędzie.
Dodatkowo pola uzupełniane generowaną sekwencją, najzwyczajniej szybciej pomijać w zapytaniu, niż pisać ten null.
Próbowałeś bez tej małpy przed postem? Szczerze mówiąc nigdy z czymś takim się nie spotkałem, może mało widziałem jeszcze. No i jak kolega podpowiada zabezpiecz sobie przed SQL Injection, pełno informacji na necie znajdziesz o tym. Ewentualnie wyświetl sobie zapytanie przed wysłaniem go do bazy, może gdzieś jakaś literówka się wkradła.
$zap = "INSERT INTO `users` (`id`, `username`, `password`) VALUES (NULL, '$username', '$pass')";
print $zap;
mysql_query($zap);
Jak jest bez małpy(@) to pokazuje ostrzeżenie o nieznanej zmiennej, a po dodaniu @ już nie. Może wkleję całą instrukcję:
if(isset($_POST['reguser'])){$_POST['username'])){$errors[] = 'You have to type your username !';
Słuchaj, przecież tu nie masz przepisania na zmienne. Powyżej miałeś. Możesz podać komunikat błędu, wyciszanie błędów to nie jest rozwiązanie problemu.
Zdecydowanie mało widziałeś. “@” służy do wyciszania warningów.
Podaj cały kod pliku. PHP + HTML.
Ehh jaki syf i czarna rozpacz.
-
Duże partie HTML powinny być pisane z ucieczką od PHP (lub patrz punkt 2). Dzięki temu IDE ma szanse to zwalidować + jest szybciej, po co przetwarzać statyczne fragmenty? Poniżej przykład obrazujący, nie jest to duży kawałek, ale twój już tak.
<?php $zmienna="pies"; if(zmienna==="pies") { ?>JESTEM PSEM
<?php } ?> -
Oddzielaj HTML od PHP, to jest w sumie główny powód twoich warningów
-
Jeśli klikniesz submit, to nigdy nie dojdziesz, do instrukcji SQL. Twój rekord nie dodaje się podczas submita, ale podczas wejścia na stronę (kiedy wszystkie zmienne są nie istniejące, a dla php odwołanie się do nich generuje warning + wstawia pusty ciąg, stąd dodają ci się puste pola). Wiesz jak działa if i isset?