2015-04-06 47 views
0

我想在PHP中做一个双重查询,并且由于某种原因不起作用。PHP更新和选择相同的查询

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条款id

$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

不行不行不行 – 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";