[英]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)訪問該過程。
您可以使用以下鏈接 -
2> http://www.joeyrivera.com/2009/using-mysql-stored-procedures-with-php-mysqlmysqlipdo/
試試這個
$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.