0

私はゲーム用にこのテーブルを持っています

scores (user,score)

その中にいくつかのエントリがあり、私はこのクエリを持っています:

SET @row_num = 0; 
SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY score DESC

phpmyadmin では動作しますが、php コードでは動作しません

$query = "set @row_num = 0; SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY score DESC";
$result = mysql_query($query) or die(mysql_error());

php は mysql データベースに適切に接続されています。その前に他のクエリを実行すると、すべてが機能します

それは言います:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY s' at line 1

それは何だと思いますか?ありがとう、アレッサンドロ

4

3 に答える 3

6

これは、phpMyAdmin がクエリをセミコロンで分割するためです。MySQL サーバーはこれを行いませmysql。PHP拡張機能も同様です。

これらを 2 つの別々の呼び出しに分ける必要があります。mysql_query

補足: PHP拡張機能は非推奨であり、新しいコードにはまたはmysqlを使用することをお勧めします。今後の開発の際には、そのことを念頭に置いてください。PDOmysqli

于 2013-01-08T14:19:39.513 に答える
2

まず第一に、mysql_query廃止されます。

の 1 回の呼び出しで 2 つのクエリを実行することはできません。mysql_query

$query = "set @row_num = 0; SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY score DESC";

以下のようにする必要があります。

$query1= "set @row_num = 0;";
$query2 = "SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY score DESC";
$result1 = mysql_query($query1);
$result2 = mysql_query($query2);
于 2013-01-08T14:19:58.360 に答える
1

2 つのクエリに分割してみてください。

$query = "set @row_num = 0;";
$query2 = " SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY score DESC;";
$result = mysql_query($query) or die(mysql_error());
$result1 = mysql_query($query2);
于 2013-01-08T14:20:32.697 に答える