-
Вопрос по id в php/Mysql
Имеется таблица users в безе. Я пишу скрипт регистрации, возник такой вопрос, на сделать что бы когда пользователь регистрировался, ему присваивался номер (id), по порядку. То есть там зарегистрировался пользователь Миша у него id 1, потом Саша, у него id 2.
У меня вышло вот такое
[CODE]
mysql_query ("CREATE TABLE 'users' (id MEDIUMINT NOT NULL AUTO_INCREMENT,name CHAR(30) NOT NULL, PRIMARY KEY (id)) TYPE=MyISAM");
$nik=$_POST['nik'];
mysql_query (" INSERT INTO users (name) VALUES ('$nik') ");
[/CODE]
однако оно как бы игнорируется, то есть сама регистрация работает а id не работает, это поле просто пустое.
Помогите мне плз.
-
-
дело в том что очень плохо знаю php, это я как бы только начал учится, и вас не понял =)
-
zower
1.
[quote]CHAR(30)[/quote]
имхо, varchar в данном случае использовать целесообразнее чтоли (если ты конечно не уверен, что у всех юзеров ники будут ровно по 30 символов)
так что лучше varchar(30)
2. поле не может быть пустым (оно NOT NULL)
покажи лучше результат выборки из юзеров (select * from users);
3.
[quote]$nik=$_POST['nik'];
[/quote]
лучше пропускать хотябы через mysql_real_escape_string()/htmlspecialchars()/trim() постовские данные
и
[quote]mysql_query (" INSERT INTO users (name) VALUES ('$nik') ");[/quote]
а зачем кавычки возле $nik ?
-
Все сделал, все равно поле id пустое....
Может я ошибся при создании самой таблицы?
[code]
<?
$table ="CREATE TABLE ".$table_user."
(`id` VARCHAR(255),
`login` VARCHAR(255),
`pass` VARCHAR(255) ,
`mail` VARCHAR(255),
PRIMARY KEY (`login`,`id`)
)";
?>
[/code]
-
zower
ну так тут у тебя уже
[quote]
`id` VARCHAR(255),
[/quote]
вместо
[code]id MEDIUMINT NOT NULL AUTO_INCREMENT[/code]
это правильно было (а то что ты сейчас написал, вообще, пардон, бред)
ты на локальной машине делаешь все?
/если да, то зайди в mysql command line client
и покажи результаты
[code] use <your database>; show create table users[/code]
вот допустим у меня:
[quote]
mysql> show create table users;
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------+
| users | CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------+[/quote]
и при вставке
[quote]
mysql> INSERT INTO users(name) VALUES ('test_user');
Query OK, 1 row affected (0.02 sec)
mysql> select * from users;
+----+-----------+
| id | name |
+----+-----------+
| 1 | nik |
| 2 | qwerty |
| 3 | test_user |
+----+-----------+
3 rows in set (0.00 sec)
[/quote]
Все как положено.
-
Я допер, вот все пашет
[code]$table ="CREATE TABLE ".$table_user."
(`id` int auto_increment,
`login` VARCHAR(255),
`pass` VARCHAR(255) ,
`mail` VARCHAR(255),
PRIMARY KEY (`id`)
)";
[/code]
-
Да, легче всего это все делается через phpmyadmin )
-
сразу видно - чувак прочитал статейку и уже считает себя программером.... ))))))
-
Люди... шо вы такое страшное делаете? id primary key, auto_increment в инсерт запрос вместо ID поставь 0
-
[QUOTE=CrazySquirrel;5277448]Люди... шо вы такое страшное делаете? id primary key, auto_increment в инсерт запрос вместо ID поставь 0[/QUOTE]
Дополню твое сообщение примером:
VALUES (0,'$nik')
-
Уже дополнять так дополнять
mysql_query("Insert Into Users Values(0,'$nick');");
не забываем что если добавляем значение из ассоциативного масива, добавляеться {}, или размыкаеться строка
-
[B]CrazySquirrel[/B]
/offtop
и не забываем тогшда уж писать
[code]
mysql_query("INSERT INTO Users VALUES(0, '$nick');");[/code]
думаю, разница понятна ;)
-
[QUOTE=D>C;5291646][B]CrazySquirrel[/B]
/offtop
и не забываем тогшда уж писать
[code]
mysql_query("INSERT INTO Users VALUES(0, '$nick');");[/code]
думаю, разница понятна ;)[/QUOTE]
Некакой разницы функция mysql_query автоматически переводит служебные слова в верхний регистр
-
ну я про кодинг стайл шоли говорил.
Читабельней, [b]имхо[/b]
-
[QUOTE=D>C;5300095]ну я про кодинг стайл шоли говорил.
Читабельней, [b]имхо[/b][/QUOTE]
Дело привычки.... я в нереестрозависимых языках, вобще пишу сплошняком...