带有SET变量语句的MySQLi查询(即多个查询) [英] Mysqli query with a SET variable statment (ie multiple queries)

查看:161
本文介绍了带有SET变量语句的MySQLi查询(即多个查询)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想设置一个变量以在mysqli查询中使用.这不太有效.在mysqli之前,我曾经设置查询调用.我玩了db-> multi_query($ sql)却没有运气.任何人都有一个想法如何使这项工作包括一个固定的陈述?

I want to set a variable to use in a mysqli query. This doesn't quite work. Prior to mysqli I used to set query calls. I played around with db->multi_query($sql) with no luck. Anyone out there have an idea how to make this work including a set statement?

$sql = 'SET @rownum := 0;';
$sql .= 'SELECT @rownum :=@rownum + 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();

推荐答案

在两个单独的查询中进行操作:

Do it in two separate queries:

$db->query('SET @rownum := 0');
$sql = 'SELECT @rownum :=@rownum + 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();

但是,请注意,由于要使用不带GROUP BY的聚合函数,因此要运行的查询将始终返回单行(带有Rank = 1).

Note, however, that the query you want to run will always return a single row (with Rank = 1) since you are using an aggregate function without GROUP BY.

这篇关于带有SET变量语句的MySQLi查询(即多个查询)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆