2011-04-14 3 views
0

В моем запросе я хочу только от id 1-3 появиться в результате, а не 4-6. есть ли другой способ сделать это?php mysql for loop

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

я пытался поставить этот код в MySQL Query

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

WHERE id_beautician in (4,5,6) –

+0

ПОЖАЛУЙСТА, используйте '$ db-> real_escape_string' или, по крайней мере, введите id в (int). Узнайте о внедрении SQL! – cweiske

+0

@ cweiske: из cuz .. у меня все настроено. еще раз спасибо – tonoslfx

ответ

1

Если идентификаторы не совпадают, вы также можете использовать, как показано ниже.

$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/>'; 
}