2014-03-24 38 views
2

我想從我的表產品獲得所有的行,然後在同一時間更新product_views也 ,選擇,然後更新計數數量的mysqli

SELECT * FROM `product` WHERE `id` = '26' AND `product_enable`= '1' AND UPDATE `product` SET `product_views` = product_views+1; 

此代碼不能正常工作,但我認爲可以幫助解釋我想要做什麼,...有沒有一個好的方法來做到這一點,我認爲使這個在1查詢應該是對系統好?

所以,感謝您的幫助

+0

你需要2個查詢 – 2014-03-24 21:17:48

+0

你不能像這樣使用AND,AND是一個WHERE子句。 –

+0

只有一個查詢是可以做到的? – Deimos

回答

4

你只是做了錯誤的方式:

UPDATE `product` SET `product_views` = 
    (SELECT product_views FROM `product` WHERE `id` = '26' AND `product_enable`= '1')+1; 
+2

這不會返回OP想要的任何值(如果我正在讀原始帖子)。 – Kryten

+1

我以爲她想要返回行,但如果沒有,這是正確的 – 2014-03-24 21:20:45

+1

是的,我想要的行返回,因爲我想顯示產品領域,所以我需要在2查詢做對嗎? – Deimos

2

使用的mysqli多查詢:http://www.php.net/manual/en/mysqli.multi-query.php

$sql = "SELECT * FROM `product` WHERE `id` = '26' AND `product_enable`= '1'; "; 
$sql.= "UPDATE `product` SET `product_views` = product_views+1;"; 

if (!$mysqli->multi_query($sql)) { 
    echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error; 
} 

do { 
    if ($res = $mysqli->store_result()) { 
     var_dump($res->fetch_all(MYSQLI_ASSOC)); 
     $res->free(); 
    } 
} while ($mysqli->more_results() && $mysqli->next_result()); 

更新2:

這是可能的,檢查出:http://php.net/manual/en/mysqli.quickstart.multiple-statement.php

可能是因爲最後一個錯誤發生;失蹤(加入)。

+0

命令不同步;你現在不能運行這個命令19我得到這個錯誤.. – Deimos

+0

'「SELECT * FROM product WHERE id ='26'AND product_enable ='1'; UPDATE product SET product_views =(SELECT product_views FROM product WHERE id ='26' AND product_enable ='1')+ 1;'' –

+0

@Loïc好的。 –