2012-02-20 2 views
-1

Я изо всех сил пытаюсь обновить свою базу данных MySQL. Это то, что я написал:Не удается обновить базу данных MySQL

$mysql_link = mysql_connect('servername','username','password'); 
mysql_select_db('bambi4couk_599731_db3', $mysql_link); 

$serializedTemplates = serialize($_SESSION['data']['user']['templates']); 
mysql_query("UPDATE rmusers SET templates='$serializedTemplates' WHERE email='" . $_SESSION['data']['user']['details']['email'] . "'"); 

Как я могу это исправить, чтобы заставить его работать?

EDIT:

Я не получаю сообщение об ошибке, но функция не обновляет базу данных и возвращает ложь.

$ _SESSION ['data'] ['user'] ['details'] ['email'] возвращает использованный адрес электронной почты (который появляется в базе данных).

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

EDIT2:

Как оказалось мое предположение было неверным, сериализованные массив должен быть экранирован первым.

+1

Какая ошибка вы получаете? Сам запрос выглядит так, что потребуется некоторая информация. Дампы '$ serialiszedTemplates' и' $ _SESSION ['data'] ['user'] ['details'] ['email'] 'тоже могут быть полезны. (p.s. намного лучше на регистрационных данных на этот раз;)) –

+0

спасибо (довольно неловко). Я не получаю ошибку, функция просто ничего не делает и возвращает false. $ _SESSION ['data'] ['user'] ['details'] ['email'] возвращает использованный адрес электронной почты (который появляется в базе данных), и сериализованный массив слишком длинный для вставки здесь, но проблем нет с ним - это строка в любом случае, поэтому я не вижу, как это может быть неправильно. –

+0

Вы пытались выполнить обновление вручную, используя значение ['email']? Похоже, что это критерий WHERE при ошибке, поскольку в противном случае он будет обновлять хотя бы * что-то * или ошибку. Возможно, стоит добавить обработчик ошибок, подробно описанный bumperbox, если ошибка подавляется –

ответ

2

Добавить

or die (mysql_error()); 

Как это

mysql_query("UPDATE rmusers SET templates='$serializedTemplates' WHERE email='" . $_SESSION['data']['user']['details']['email'] . "'") or die (mysql_error()); 

Тогда скажите нам, что сообщение об ошибке, так что мы можем помочь вам

В догадке я ожидал бы вы не избежали значения

см. mysql_real_escape_string()

http://www.php.net/manual/en/function.mysql-real-escape-string.php

+0

bingo. спасибо за помощь. Я обвиняю w3schools за мое плохое образование. –

Смежные вопросы