2009-07-01 6 views
1

HI、また、MySQLのクエリでLIMIT使用しながら、日付順 - 私は非常にこれを理解することはできませんPHP

を、私は、MySQLからレコードをプルしようとしている、彼らは時系列-逆転し、結果を制限注文ページごとに4つに(およびページを整理するためにページを使用して)これは、現在、このエラーが返されます。

致命的なエラー:行に/Users/allan/Sites/4is_site/casestudylist.phpにおけるSQLは126

$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = "SELECT * FROM studies ORDER BY date desc WHERE niche = '{$_GET['niche']}' $limit"; 

ページネーションは、ちょうど今、私は「は、細かい作業をされていますORDER BYを追加しようとしましたが、問題が発生しています。

+0

また、私はこれをエスケープする必要があると聞きました。 '{$ _GET [' niche ']}'、どうすればいいですか? – user96828

答えて

8

構文が正しくありません。これはうまくいくはずです。

今後の参考のために
$escapedNiche = mysql_real_escape_string($_GET['niche']); 
$query = "SELECT * FROM studies WHERE niche = '$escapedNiche' ". 
     "ORDER BY date DESC $limit"; 

からSELECT Syntax

0

ところで$ _GET [ 'ニッチ']をエスケープする:

$clean_niche = mysql_escape_string($_GET['niche']); 
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = "SELECT * FROM studies " 
     ."WHERE niche = '{$clean_niche}' " 
     ."ORDER BY date desc $limit"; 

これは$で文字をエスケープして、SQLインジェクション攻撃からユーザーを保護するのに役立ちます_GET ['ニッチ']。

セキュリティを強化するには、バインドされたパラメータ(google'em)やZend DBなどのライブラリ関数を使用してデータベースにアクセスすることを検討してください。

+0

mysql_escape_stringは、入力が引用符で囲まれている場合にのみ入力を消毒します。制限をサニタイズするには、is_numeric()を使用して 'ニッチ'パラメータが整数であることを検証できます。 – diedthreetimes

関連する問題