2016-10-06 3 views
0

У меня есть SQL-запрос для проверки состояния в таблице. Это мой стол и запись:изменить статус, если весь статус 3 в mysqli

#table product# 
 
id_pd id_po status 
 
1  po001 0 
 
2  po001 0 
 
3  po001 0 
 
4  po001 1
как echo "done"; если все записи имеют статус 1 по id_po?

<?php 
 
include 'connection.php'; 
 

 
$qry = $db->query("SELECT status FROM product WHERE id_po='$id_po' "); 
 
$fet = $qry->fetch_assoc(); 
 
if($fet['status'] == 1){ 
 
echo "done"; 
 
} 
 

 

 
?>

+0

Добавьте 'AND status = 0' к вашему запросу и проверьте, является ли счетчик строк' 0'. – jeroen

+0

Мне нужно добавить 'while()'? –

+0

'while()' приятно, вам обязательно нужно добавить 'while()' – jeroen

ответ

3

Вы можете проверить, мин статус:

$qry = $db->query("SELECT min(status) as min_status FROM product WHERE id_po='$id_po' group by id_po"); 
$fet = $qry->fetch_assoc(); 
if($fet['min_status'] == 1){ 
    echo "done"; 
} 
+0

да, этот код очень полезен и прост –

+0

спасибо This.Lau –

+0

Кстати, почему предлагают использовать 'min'? пожалуйста, дайте мне ссылку. –

0

попробовать это, я не пробовал, но я думаю, что это даст вам идею))

<?php 
include 'connection.php'; 
$status = true; 
$qry = $db->query("SELECT status FROM product WHERE id_po='$id_po' "); 
while ($fet = mysql_fetch_assoc($qry)) { 

    if($fet['status'] == 0){ 
     $status = false; 
    } 
} 
if($status){ 
    echo 'done'; 
} 
?> 
+0

Я так думаю, но я еще не попробовал –

+0

попробовал, он должен работать) –

+0

, если вам не нужно использовать данные из db, вы можете добавить в свой запрос AND select = 0, и если mysql вернет 0 строк, это означает, что все ваши записи имеют статус = 1 (c) jeroen 2 мин назад –

0

Ваше состояние, если все состояние 1, статус будет в порядке. В этой ситуации вы можете попробовать это

// get all 
$qry = $db->query("SELECT count(*) all_status FROM product WHERE id_po='$id_po'"); 
$fet = $qry->fetch_assoc(); 

// get active 
$qry2 = $db->query("SELECT count(*) all_status FROM product WHERE id_po='$id_po' AND status >= 1"); 
$fet2 = $qry2->fetch_assoc(); 

// match both record 
if($fet1['all_status'] == $fet2['all_status']){ 
    echo "done"; 
} 
Смежные вопросы