0

わかりました、私はここで混乱しています。

私はそれが完璧に動作するこのコードを持っています

$result = mysql_query("SELECT * FROM e_track_access_log WHERE member_id>0 ORDER BY     
datetime_accessed DESC LIMIT 0,20");
?>
            <?php
while($rows=mysql_fetch_array($result)){
?>

0 より大きいフィールド member_id のすべてをフェッチします

私が今行ったことはすべて、次のように変更されています

$result = mysql_query("SELECT * FROM e_track_access_log WHERE dealer=Demo ORDER BY    
datetime_accessed DESC LIMIT 0,15");
?>
           <?php
while($rows=mysql_fetch_array($result)){
?>

私がやりたいのは、デモを含むディーラー情報のみを表示することだけです。

これは私が受け取ったエラーです

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in   
/home/www/controldemo.e-track.co.za/control_main.php on line 177
4

3 に答える 3

3

は文字列なのでdemo、一重引用符で囲む必要があります。

SELECT * 
FROM e_track_access_log 
WHERE dealer = 'Demo' 
ORDER BY datetime_accessed DESC 
LIMIT 0,15

SQL Injection補足として、変数の値(s)が外部からのものである場合、クエリは脆弱です。それを防ぐ方法については、以下の記事をご覧ください。を使用PreparedStatementsすると、値を一重引用符で囲む必要がなくなります。

于 2013-03-15T15:41:02.763 に答える
3

文字列を比較するには引用符が必要です。

$result = mysql_query("SELECT * FROM e_track_access_log WHERE dealer='Demo' ORDER BY datetime_accessed DESC LIMIT 0,20");   

ただし、この場合は二重引用符を使用しないでください。使用すると、現在のmysql_query文字列パラメーターが閉じられます。

とにかく、言及されているように、mysql_query 非推奨ですPDOを使用することをお勧めします。これにより、SQL インジェクションに対するセキュリティも強化されます。

その使用例を次に示します。

$mysqlString =  'mysql:' 
              .'host='.$yourHost.';' 
              .'dbname='.$yourDBName; 

$conn = new PDO( $mysqlString, $yourUser, $yourPassword);  

$stmt = $conn->prepare(("SELECT * FROM e_track_access_log WHERE dealer=:dealer ORDER BY datetime_accessed DESC LIMIT 0,20");

$stmt->bindParam(':dealer', 'demo');

$stmt->execute();

$data = $query->fetchAll(PDO::FETCH_ASSOC);
于 2013-03-15T15:40:48.110 に答える
0

実際の問題は、引用符がないと、mysql がステートメントを列のように評価し、列 Demo が明らかに現在のスコープに存在しないことです。クエリは失敗し、次のようなエラーが返されます: ERROR 1054 (42S22): Unknown column 'Demo' in 'where clause'. これを回避するには、エラー チェックを使用する必要があります。

この章にいるので、mysql_* 関数は将来削除され、今後は使用しないことを思い出してください。

前のmysqlエラーのため、クエリの結果はfalseです。したがって、リソースはありませんが、単純なブール値です。したがって、チェックが不足しているため、phpコードにエラーがあります。

これを回避する 2 つの可能性: mysql エラーを確認し、クエリ関数によって返された結果が実際に false でないかどうかを確認します。

于 2013-03-15T15:47:56.367 に答える