Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: UPDATE в базе MySQL
 
 автор: danga   (17.03.2014 в 16:37)   письмо автору
 
 

Столкнулась с такой неожиданной проблемой, которую никак не могу решить.
Есть таблица users MySQL с реальными записями пользователей, которые регистрировались на сайте:

iduser INT(10) NOT NULL AUTO_INCREMENT,
  status VARCHAR(6) NOT NULL,
  login VARCHAR(12) NOT NULL,
  passwd VARCHAR(40) NOT NULL,
  email VARCHAR(40) NOT NULL,
  mail INT(1) NULL,
  activ INT(1) NOT Null,
  date DATETIME,
  ip VARCHAR(50) NULL,
  agent VARCHAR(225) NULL,
  PRIMARY KEY (iduser)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


В phpMyAdmin добавила в этой таблице еще один столбец

key VARCHAR(40) NULL, 


этот столбец изначально должен заполняться при регистрации пользвателей оператором INSERT, а потом меняться при авторизации пользователей через

$q=mysql_query("UPDATE users SET key='$key'  WHERE iduser='$iduser'");


Но естественно, при регистрации он не заполнялся, так как его просто не было. А теперь при авторизации UPDATE ничего вписать туда не может


Я предполагала, что проблема с типом данных, но нет. Я уже в коде делала такие проверки:


$q=mysql_query("UPDATE users SET ip='12456abvy'  WHERE iduser='$iduser'"); 

- UPDATE записывет это значение вместо нормального IP, который в этом поле был записан раньше.


$q=mysql_query("UPDATE users SET key='12456abvy'  WHERE iduser='$iduser'");

- UPDATE в столбец key ничего не записывает.

И какое решение может быть?

  Ответить  
 
 автор: Valick   (17.03.2014 в 16:55)   письмо автору
 
   для: danga   (17.03.2014 в 16:37)
 

1) возьмите за правило формировать запрос в отдельной переменной
$query ="UPDATE users SET key='12456abvy'  WHERE iduser='$iduser'";

в этом случае легко контролировать корректность запроса обычным эхо
echo $query ="UPDATE users SET key='12456abvy'  WHERE iduser='$iduser'";

2) используйте для отладки конструкцию or die()
$q=mysql_query($query) or die(mysql_error());

БД сама расскажет что ей не нравится

  Ответить  
 
 автор: danga   (17.03.2014 в 19:45)   письмо автору
 
   для: Valick   (17.03.2014 в 16:55)
 

Я нашла решение проблемы. Нельзя называть столбец именем key. Назвала keycook - теперь все в прядке. У меня такое уже было в другой таблице, кода я пыталась назвать именем to...Другим на заметку:)

  Ответить  
 
 автор: Valick   (17.03.2014 в 19:48)   письмо автору
 
   для: danga   (17.03.2014 в 19:45)
 

попробуйте взять key в обратные кавычки `key`

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования