Проблем с INSERT в базата данни при регистрация.

kini

Registered
Здравейте имам форма за регистрация когато напиша всичко и натисна бутона излиза Out of range value adjusted for column 'userid' at row 1
На какво се дължи проблема :(
 
Код:
$insery = mysql_query("INSERT users (username, password, email) VALUES ('$user', '$pass', '$email')");
echo "INSERT users (username, password, email) VALUES ('$user', '$pass', '$email')";
И да видим резултата.
 
[sql]
INSERT users (userid, username, password, email) VALUES (NULL, '$user', '$pass', '$email');
[/sql]

Поправка след коментара на RegexSux - бях използвал id, а в съобщението за грешка е написано userid. Съобщението е доста специфично и то при поле, което auto_increment, в самото начало на проекта:
http://webomania.wordpress.com/2006/10/01/out-of-range-value-adjusted-for-column-error/
 
exec каза:
[sql]
INSERT users (id, username, password, email) VALUES (NULL, '$user', '$pass', '$email');
[/sql]
Same shit, another day.

Не мисля че това е проблема, по скоро бърка колоните.Забележи id и userid.
 
Приятел, какво ползваш да си управляваш базата-данни? phpMyAdmin? Можеш ли да направиш export само на структурата на конкретната таблица и да я покажеш тук?
 
Имаш огромен брой колони, за които е добавено условието винаги да имат стойност (NOT NULL), нямат стойност по подразбиране, а ти не ги включваш в заявката за добавяне на нов потребител!

Имаш три варианта:
1. NOT NULL е добре да слагаш само на колоните, които са задължителни за попълване, като например потребителското име, паролата, имейл адреса. Другите спокойно могат да бъдат NULL. В този случай нямада има нужда да добавяш всички други колони в заявката, когато не ти трябват.

2. NOT NULL означава, че това поле трябва да има "стойност". Празната колона също е "стойност" и макар на пръв поглед да се обезмисля, ако държиш все пак всички колони да са NOT NULL, тогава им добави празна стойност по подразбиране - default ''

[sql]
`nitro` int(11) NOT NULL default '',
`nitro` int(11) NOT NULL default 0,
[/sql]

В този случай, при добавяне на нов потребител, няма нужда да изреждаш всички колони, базата-данни ще добави автоматично стойността по подразбиране, която си задал.

3. При третия вариант, не правиш никакви промени по таблицата, а само в заявката като винаги изреждаш всички колони и ръчно им задаваш стойност, пък макар и празна стойност, пак е стойност.

[sql]
INSERT into `users` VALUES (NULL, '$username', '$password', '$email', '$carid', '$sponsorid'.......);
[/sql]
 
Ето в тази заявка половината колони ги има, другата половина ги няма в таблицата!

[sql]
$insery = mysql_query("INSERT users (username, password, email, carid, money, moshnost, uskorenie, aerodinami4nost, userip) VALUES ('$user', '$pass', '$email', '0', '6000', '106', '50', '50', '$userip')");
[/sql]

От money нататък колоните липсват в таблицата. Прегледай си пак целия код и го оправи, това е от бързане и недоглеждане, вероятно много си преправял докато го правиш. Споко, ще стане, но бавно и полека. Успех!
 

Back
Горе