Mysql变量无法通过php Mysql查询工作

Mysql变量无法通过php Mysql查询工作,php,mysql,Php,Mysql,我有一个疑问: $query = " SET @points := -1; SET @num := 0; SELECT `id`,`rank`, @num := if(@points = `rank`, @num, @num + 1) as `point_rank` FROM `said` ORDER BY `rank` *1 desc, `id` asc"; 我正在使用这个来自php的查询;告诉我这个错误: 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了

我有一个疑问:

$query = " 

 SET @points := -1;
 SET @num := 0;

 SELECT `id`,`rank`,
 @num := if(@points = `rank`, @num, @num + 1) as `point_rank`
 FROM `said`
 ORDER BY `rank` *1 desc, `id` asc";
我正在使用这个来自php的查询;告诉我这个错误:

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解要在“SET@num:=0”附近使用的正确语法

如果我在phpmyadmin Sql查询面板中复制并粘贴该代码,它工作得很好,但是从php代码行来看,它不工作,似乎在设置变量时出现了问题。

试试这个

$result1 = mysql_query("SET @points := -1 ;");
$result2 = mysql_query("SET @num := 0;");
$result3 = mysql_query($this->query); // <-- without the SET ... query
$result1=mysql\u查询(“SET@points:=-1;”);
$result2=mysql\u查询(“SET@num:=0;”;

$result3=mysql_query($this->query);// 当我们查看您的代码时,您正在尝试使用PHP中与MySql存储过程相关的语法。只有特定于ANSI Sql的查询将通过PHP接口执行

否则,您必须编写MySql存储过程,并通过PHP数据对象(PDO)访问该过程

你可以有以下链接-

1>

2>


3>

您是否尝试过使用
交叉联接来代替在单独的
集合中设置变量

$query = " 

SELECT `id`,
  `rank`,
  @num := if(@points = `rank`, @num, @num + 1) as `point_rank`
FROM `said`
CROSS JOIN (SELECT @points:=-1, @num:=0) c
ORDER BY `rank` *1 desc, `id` asc";

这是3个查询和一个执行。数据库库是否支持多个查询?如果没有,则需要将其拆分为三个。分隔查询的分号!!我已经通过php使用了多个查询,但我明白你的意思,最后一个查询取决于第一个查询。。。。有什么解决方案吗?@itachi你看不到他在标记MYSQL
?当前代码是:$query1=$db->select(“SET@points:=-1;”);$query2=$db->select(“SET@num:=0”);$query=“选择
id
rank
,@num:=if(@points=
rank
,@num,@num+1)作为
点(point)rank
中的
排序依据
rank
*1描述,
id
asc;”@itachi的意思是“eww,PHP ext mysql库,现在已经不推荐使用了;应该改用ext mysqli或PDO。”提示:db还有其他API没有被推荐使用<代码>MYSQL
!=
mysql.*
@Emad这方面的好处是变量在查询中重置,而不是在单独的
set
语句中重置。在使用jdbc PreparedStatement时,这在java中也起作用。好提示!哦,老兄,由于某种原因,我的变量无法与其他方法一起工作,这实际上保留了我的就业状态!非常感谢。