PHP语句中的SQL变量
我的代码:PHP语句中的SQL变量,php,mysql,Php,Mysql,我的代码: $sql = "SET @row_number = 0; SELECT (@row_number:=@row_number + 1) AS num, player, reinforcees, reinforcers FROM _KoT_villages WHERE o = '".$data[2]."' OR o = '".$data[4]."' ORDER BY CASE WHEN player = '".$user_class->id."' THEN 1 ELSE 2 EN
$sql = "SET @row_number = 0; SELECT (@row_number:=@row_number + 1) AS num, player, reinforcees, reinforcers FROM _KoT_villages WHERE o = '".$data[2]."' OR o = '".$data[4]."' ORDER BY CASE WHEN player = '".$user_class->id."' THEN 1 ELSE 2 END";
$result = mysql_query($sql) or die(mysql_error());
错误:
您的SQL语法有错误;检查手册
对应于要使用的正确语法的MariaDB服务器版本
“选择(@row\u number:=@row\u number+1)作为num,player,
加强件,第1行的加强件F'
当我回显SQL语句时,我得到以下结果:SET@row\u number=0;选择(@row_number:=@row_number+1)作为num、player、加强物、来自_KoT_村庄的加强物,其中o='1'或o='5'在player='2'时按大小写顺序,然后1其他2结束
当我通过phpMyAdmin运行echo
d语句时,它成功运行,并给出了一行行结果
但是为什么它不能在PHP语句中工作呢?发生什么事?如何让PHP做SQL正在做的事情
在有人说我自己还没有试图找到答案之前,如果你在谷歌上搜索“sql变量”php站点:stackoverflow.com,我发现的每个问题都是关于在php中访问sql结果(即循环)或在sql中插入php变量,这不是我需要的。我试图在SQL语句中插入一个SQL变量
另外:我意识到我应该停止使用MySQL,并且正在转换过程中,但是为了快速解决一个bug…我正在使用MySQL。php中的MySQL客户端需要单独的语句 开放式MySQL客户端 第一项声明:
SET @row_number = 0
SELECT
(@row_number:=@row_number + 1) AS num,
player,
reinforcees,
reinforcers
FROM
_KoT_villages
WHERE
o = '".$data[2]."'
OR o = '".$data[4]."'
ORDER BY
CASE WHEN player = '".$user_class->id."' THEN 1
ELSE 2
END
$result = mysql_query( [2nd Statement] ) or die(mysql_error());
第二项声明:
SET @row_number = 0
SELECT
(@row_number:=@row_number + 1) AS num,
player,
reinforcees,
reinforcers
FROM
_KoT_villages
WHERE
o = '".$data[2]."'
OR o = '".$data[4]."'
ORDER BY
CASE WHEN player = '".$user_class->id."' THEN 1
ELSE 2
END
$result = mysql_query( [2nd Statement] ) or die(mysql_error());
关闭MySQL客户端
MySQL\u查询
不支持一次调用多个查询。您需要升级到mysqli
或PDO
才能启用该功能。同时,您可以使用交叉连接来初始化行号
变量,例如
$sql = "SELECT (@row_number:=@row_number + 1) AS num, player, reinforcees, reinforcers
FROM _KoT_villages
CROSS JOIN (SELECT @row_number := 0) r
WHERE o = '".$data[2]."' OR o = '".$data[4]."'
ORDER BY CASE WHEN player = '".$user_class->id."' THEN 1 ELSE 2 END";
您需要使用支持MySQL多个查询的东西,例如或。