带有SET变量陈述的Mysqli查询(即多个查询)

问题描述:

我想设置一个变量以在mysqli查询中使用。这不起作用。在使用mysqli之前,我用来设置查询调用。我玩弄了db-> multi_query($ sql),但没有运气。那里的任何人都知道如何做这项工作,包括一套陈述?带有SET变量陈述的Mysqli查询(即多个查询)

$sql = 'SET @rownum := 0;'; 
$sql .= 'SELECT @rownum :[email protected] + 1 AS Rank, User_Id, COUNT(User_ID) AS Block_Count 
       FROM Block_Owners; 

$stmt = $db->prepare($sql); 
$stmt->bind_param('ii', $world, $userId); 
// execute the query 
$stmt->execute(); 
+1

您可能可以使用'FROM BLOCK_OWNERS'(SELECT @rownum:= 0)r;' – 2009-11-21 00:25:07

做它在两个单独的查询:

$db->query('SET @rownum := 0'); 
$sql = 'SELECT @rownum :[email protected] + 1 AS Rank, User_Id, COUNT(User_ID) AS Block_Count FROM Block_Owners' 
$stmt = $db->prepare($sql); 
$stmt->bind_param('ii', $world, $userId); 
$stmt->execute(); 

但是请注意,该查询要运行总是会返回一行(与Rank = 1),因为您使用聚合功能,无需GROUP BY

+0

Perfect在单个查询中执行该操作。不用担心群组,实际查询更大,我只是简化了一下,使问题更容易理解。感谢Quassnoi! – Codezy 2009-11-20 23:41:01