簡體   English   中英

Mysql變量無法通過php mysql查詢工作

[英]Mysql Variables not working through php mysql query

我有這個問題:

$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代碼行開始它不起作用,看起來設置Vars時會出現問題。

您是否嘗試使用CROSS JOIN而不是在單獨的SET中設置變量:

$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";

在我們查看您的代碼時,您正在嘗試使用PHP中的MySql存儲過程相關語法。 只有ANSI Sql特定的查詢才能通過PHP接口執行。

否則,您必須編寫MySql存儲過程並通過PHP數據對象 - (PDO)訪問該過程。

您可以使用以下鏈接 -

1> 存儲過程,MySQL和PHP

2> http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/

3> http://php.net/manual/en/pdo.prepared-statements.php

試試這個

$result1 = mysql_query("SET @points := -1 ;");
$result2 = mysql_query("SET @num := 0;");
$result3 = mysql_query($this->query); // <-- without the SET ... query

從手冊:

mysql_query()發送唯一查詢(不支持多個查詢)

編輯:

你應該使用PDO或mysqli,因為mysql很快就會被棄用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM