2017-01-11 27 views
0

これまでに質問されても、申し訳ありませんが、これはクエリに固有のものだと思います。PHPとSQLの両方に非常に新しくなっていますが、私はphpmyadminに貼り付けるとうまくいきますが、$sql =""(PHPで)の間に含まれているとクエリが出てしまいます。無駄な試みで はそれだけで、なぜ、PHPで見ることができない私は、問題のある項目を見ることができますブラウザ経由で呼び出すデバッグする:これは、何も返さない投稿結果がphpmyadminよりphp経由でSQLクエリーを投稿

$sql = "SET @rownum := 0; SELECT * FROM (SELECT @rownum := @rownum+1 AS rank, ID, Username, Score, UDID FROM users ORDER BY Score DESC) 
AS derived_table WHERE Username = 'Dave';"; 

...しかし、phpmyadminのに貼り付けて、それが正常に動作しますスコアでソートされた2つのエントリを返し、ランクを表示します。

SET @rownum := 0;を削除した場合は機能しますが、ランクにはnullが返されます。それを終了させて​​いますか?

私は最後の髪の毛を引き出す前に、どんなアイデアも大きな助けになるでしょう。

+0

あなたのPHPコードがなければ、わかりにくいですが、mysqli_multi_queryを使用していない可能性があります。セミコロンはステートメントの終わりを意味し、通常のmysqli/PDOはそこで停止します。いくつかのステートメントに分割してみてください。 – aynber

答えて

1

PHPの通常のmysql APIでは、これはできません。 クエリを別々に実行してください(SET & SELECT)。mysqli_multi_queryを使用してください。 http://se2.php.net/manual/en/mysqli.multi-query.php

+0

それは正しいです、私はそれがと関係があると示唆しました。終了...そして今私はそれが仕事をしている複数のクエリに切り替えました...それはそれが証明されたのですが、インターネットはそれがあなたにSQLインジェクションまであなたを開き、避けて...この人の考えは? – user7406099

+0

ここでのセキュリティ上の考慮事項を読むhttp://php.net/manual/en/mysqli.quickstart.multiple-statement.php – Roljhon