2011-04-14 10 views
0

私のクエリでは、私はid 1-3から結果4-6では出現しないようにしたい。それを行う他の方法はありますか?php mysql forループ

beautician database table: 
id_beautician name 
1    a 
2    b 
3    c 
4    d 
5    e 
6    f 

私はmysqlのクエリで以下

for($i=4; $i<=6; $i++) : 
    $q.$i = $db->query("SELECT * FROM beautician WHERE id_beautician='$i'"); 
    $r.$i = $q.$i->fetch_assoc(); 
    //echo $i; 
endfor; 

を、コードを入れてみましたが、それは私にエラー与える:

Object of class mysqli_result could not be converted to string

+1

id_beautician(4,5,6) –

+0

'$ db-> real_escape_string'を使用するか、少なくともidを(int)にキャストしてください。 SQLインジェクションについて学んでください! – cweiske

+0

@cweiske:のcuz .. iveすべてのセットアップを得た。再度、感謝します – tonoslfx

答えて

1

IDが連続していない場合は、次のように使用することもできます。

$query = $db->query("SELECT * FROM beautician WHERE id_beautician in (1,2,3)"); 
while ($row = $query->fetch_assoc()) 
{ 
    echo $row['id'] . ' = ' . $row['name'] . '<br/>'; 
} 

クエリでINを使用すると、実行速度が低下することがありますが、小型データベースでは効率的に使用できます。

4

代わりのnクエリを実行し、唯一の一致するSQLクエリを変更必要なデータ - たとえば:

$query = $db->query("SELECT * FROM beautician WHERE id_beautician <= 3"); 
while ($row = $query->fetch_assoc()) { 
    echo $row['id'] . ' = ' . $row['name'] . '<br/>'; 
}