2015-04-06 3 views
0

Я пытаюсь сделать двойной запрос в php и по какой-то причине не работает.php UPDATE и SELECT в том же запросе

Basicall Я хочу обновить строку в моей таблице, где id MAX и fb_id равен параметру fbId.

Вот мой код:

public function updatePages($fbId, $nr_page = NULL) { 
     $db = Database::getInstance(); 
     $query = "UPDATE visits SET pages =".$nr_page." WHERE id = (SELECT maxvalue FROM (SELECT MAX(id) AS maxvalue FROM visits WHERE fb_id =".$fbId."))"; 
     if($db->query($query)) 
      return true; 
     return false; 
    } 
+0

ли вы проверить запрос в MySQL (верстак, командной строки) уже? Это может указывать на проблему с запросом. –

+0

Я не пытался, у меня его нет. – Speedwheel

+0

Пошлите и попробуйте выполнить запрос: Это делает процесс отладки более эффективным. –

ответ

0

Вы можете попробовать этот способ SELECT макс ид и назначить id из WHERE пункта

$query = "UPDATE visits SET pages =".$nr_page." WHERE id = (SELECT MAX(id) AS maxvalue FROM visits WHERE fb_id =".$fbId." LIMIT 1)"; 
+0

все еще не работает – Speedwheel

+0

@Speedwheel см. Мой ответ на вопрос –

+0

nope Это не работает – Speedwheel

0

ли вам нужны два уровня? Попробуйте это:

$query = "UPDATE visits SET pages =".$nr_page." WHERE id = (SELECT id FROM visits WHERE fb_id =".$fbId." ORDER BY id DESC LIMIT 1)"; 
+0

Нет, он говорит: «Общая ошибка: 1903 Вы не можете указать целевую таблицу« посещений »для обновления в предложении FROM» – Speedwheel

+0

. то, что я предложил, не может быть сделано с MySQL. – adarshdec23

+0

Я нашел его в конце концов, был похож на ваш ответ. – Speedwheel

0

Я сделал его работу, наконец, вот решение:

$query = "UPDATE visits SET pages =".$nr_page." WHERE fb_id =".$fbId." ORDER BY id DESC LIMIT 1"; 
Смежные вопросы