2012-05-26 2 views
0

У меня есть следующий запрос в моем файле PHP:Почему мой запрос не обновляется?

if ($user) { //user is logged in (which he is) 
     $highscore = mysql_query("SELECT highscore FROM highscore WHERE fbID = $user"); //wil give 200 
     $fb_country_str = nl; 

     if (mysql_num_rows($highscore) == 0) { //if no result from highscore set it to 1 
      $highscore = 1; 
     } else { //if we do get a result, select the country (in this case it is: uk) 
      $country = mysql_query("SELECT country FROM highscore WHERE fbID = $user"); 
      if (!($country == $fb_country_str)) { //if the country is NOT the same, update the country with $fb_country_str (which in this case it should update) 
       $sql = mysql_query("UPDATE highscore SET country = $fb_country_str WHERE fbID = $user"); 
      } 
     } 
    } 

Теперь, при запуске, он не обновляет базу данных, где страна Великобритания должна быть изменена на нл. Почему нет? Что мне не хватает?

Сердечные приветы

+1

Поместите переменные в ' '': '$ SQL = mysql_query ("UPDATE Highscore SET страны = '$ fb_country_str' WHERE fbID = '$ пользователя'");' Это предотвратит ошибки запроса, когда страна содержит более одного слова. – MarcinJuraszek

+1

И еще более важно - вы должны подумать об использовании PDO http://php.net/manual/en/book.pdo.php – MarcinJuraszek

+1

Пожалуйста, прекратите писать новый код с помощью древних 'mysql_ *' функций. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://goo.gl/KJveJ). Вместо этого вы должны узнать о [подготовленных утверждениях] (http://goo.gl/vn8zQ) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/ MySQLi). Если вы не можете решить, статья [this] (http://goo.gl/3gqF9) поможет выбрать. Если вы хотите учиться, [здесь] (http://goo.gl/vFWnC) является хорошим учебным пособием, связанным с PDO. – Esailija

ответ

1

функция mysql_query не возвращает строку, он возвращает ресурс, который можно использовать с другими mysql_ * функции (см http://php.net/mysql_query)

Так переменная $ страна - это не то, что вы ожидаете. Вы должны использовать функцию как mysql_fetch_assoc или mysql_result вывести страну снабжать струной, тетивой и т.п.

вы можете увидеть образцы на странице php.net человека, а также вы использовали возвращаемое значение в качестве ресурса (а не скалярное значение) уже в этом сценарии, при вызове функции mysql_num_rows на $ Highscore

+0

Действительно, я забыл цитаты (время для кофе, я думаю) !!! Спасибо – Maurice

0
if ($user) { //user is logged in (which he is) 
     $highscore = mysql_query("SELECT highscore FROM highscore WHERE fbID = $user"); //wil give 200 
     $fb_country_str = "nl"; //It's a string , you need quotes. 

     if (mysql_num_rows($highscore) == 0) { //if no result from highscore set it to 1 
      $highscore = 1; 
     } else { //if we do get a result, select the country (in this case it is: uk) 
      $getCountry = mysql_query("SELECT country FROM highscore WHERE fbID = $user"); 
//NOTICE - COUNTRY IS NOT THE COUNTRY VALUE YET! 
$country = mysql_fetch_array($country); 
$country = $country['country']; 
      if (!($country == $fb_country_str)) { //if the country is NOT the same, update the country with $fb_country_str (which in this case it should update) 
       $sql = mysql_query("UPDATE highscore SET country = $fb_country_str WHERE fbID = $user"); 
      } 
     } 
    } 
0

$ пользователю - вы повторно рассматривая его как логическое значение (в, если заявление), то ряд (если я правильно предполагаю) в запросе

+0

, даже если $ user is number ... if условие будет оценивать его false в случае 'if ($ user)' is 'if (0)' – Rahul

+0

Пользователь действительно является номером, который является правильным – Maurice

0

Изменить последнее, если состояние

if ($country != $fb_country_str) 
{ 
//if the country is NOT the same, update the country with $fb_country_str (which in this case it should update) 
$sql = mysql_query("UPDATE highscore SET country = $fb_country_str WHERE fbID = $user"); 
} 
Смежные вопросы