Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: id записи
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » id записи

Страниц (1): [1]
 

1. Tahion - 30 Октября, 2009 - 05:46:01 - перейти к сообщению
Надо сделать так, что бы каждый раз, при добавлении записи в таблицу MySQL ей автоматически присваивался id, который тоже является столбцом этой таблицы. Причем каждый следующий id должен быть на 1 больше предыдущего. Вот код добавления:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $server="***";
  3. $dbuser="***";
  4. $pass="***";
  5. $DB="***";
  6. $ntitle = $_POST['title'];
  7. $ntext = $_POST['text'];
  8. $nuser = $_POST['user'];
  9. $id = $_POST['id'];
  10. $now = date (" H : i : s d - m - Y ");
  11. mysql_connect($server,$dbuser,$pass) or die(" Нет коннекта !");
  12. mysql_query("Insert INTO tms_news (Ntitle,Ntext,Ndate,Nuser,News_id)
  13. VALUES('".addslashes($ntitle)."','".addslashes($ntext)."','".addslashes($now)."',
  14. '".addslashes($nuser)."', '".addslashes($id)."')");
  15. echo " Новость добавлена !";
  16. ?>
2. Viper - 30 Октября, 2009 - 07:45:11 - перейти к сообщению
для поля id указать unsigned NOT NULL AUTO_INCREMENT
3. Tahion - 30 Октября, 2009 - 16:16:40 - перейти к сообщению
SQL-запрос:

ALTER TABLE `tms_guests` CHANGE `id` `id` MEDIUMINT( 5 ) NOT NULL AUTO_INCREMENT

Ответ MySQL:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
4. valenok - 30 Октября, 2009 - 16:38:51 - перейти к сообщению
Еще поле сделай первичным ключм
5. Tahion - 30 Октября, 2009 - 16:58:33 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. ALTER TABLE  `tms_guests` ADD PRIMARY KEY (  `id` )

пишет
CODE (text):
скопировать код в буфер обмена
  1. #1062 - Duplicate entry '0' for key 1
6. Ch_chov - 30 Октября, 2009 - 17:51:08 - перейти к сообщению
Нужно убрать все повторяющиеся значения из `id`
7. valenok - 30 Октября, 2009 - 18:15:15 - перейти к сообщению
ALTER TABLE `tms_guests` CHANGE `id` `id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ;
8. Tahion - 30 Октября, 2009 - 19:05:59 - перейти к сообщению
Спасибо
9. Tahion - 31 Октября, 2009 - 10:04:31 - перейти к сообщению
Что бы не создавать новую тему.
В таблице имеется 1 строка, 3 столбца
Надо их изменить через php
PHP:
скопировать код в буфер обмена
  1. <?
  2. $server="***";
  3. $dbuser="***";
  4. $pass="***";
  5. $DB="***";
  6. $ntitle = $_POST['title'];
  7. $ntext = $_POST['text'];
  8. $now = date (" H : i : s d - m - Y ");
  9. mysql_connect($server,$dbuser,$pass) or die(" Нет коннекта !");
  10. mysql_query("Update tms_bio Set title=$Ntitle, date=$now, text=$Ntext");
  11. echo " Биография изменена !";
  12. ?>

Пишет "Биография изменена !", но почему то не изменяет.
10. Ch_chov - 31 Октября, 2009 - 10:11:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo "Update tms_bio Set title=$Ntext, date=$now, text=$Ntext";

Сам все увидишь.
Строковые значения нужно заключать в кавычки.

PHP:
скопировать код в буфер обмена
  1. $ntitle = $_POST['title'];
  2. $ntext = $_POST['text'];
Так тоже не надо делать. Проверяй все данные от пользователя.

http://php.su/security/
(Добавление)
Кстати, если у тебя будет несколько записей, то при таком запросе они будут обновляться все.
11. Tahion - 31 Октября, 2009 - 10:32:10 - перейти к сообщению
исправил на
PHP:
скопировать код в буфер обмена
  1. mysql_connect($server,$dbuser,$pass) or die(" Нет коннекта !");
  2. mysql_query("(Update tms_bio Set title='".$ntitle."', date='".$now."', text='".$ntext."')");
  3. echo "Update tms_bio Set title=$ntitle, date=$now, text=$ntext";

пишет
Цитата:
Update tms_bio Set title=Заголовок, date= 11 : 31 : 34 31 - 10 - 2009 , text=ТекстНазад!
12. valenok - 31 Октября, 2009 - 11:13:49 - перейти к сообщению
Расскажу по секрету что строки берут в кавычки, команды пишут заглавными буквами, а названия имена и таблиц заключают в апострофы.
Кроме того, разумней использовать встроенные функции SQL вместо PHP - там, где это возможно.

 

Powered by ExBB FM 1.0 RC1