2016-11-05 55 views
1

我一直坚持这个问题一段时间了。我确信答案很容易在Google上找到,但我一直无法找到要搜索的词,所以我最后的手段就在这里。先谢谢了!虽然和if语句在MySQL与MySQL

我有这样的PHP代码:

if(mysqli_num_rows($query) > 0) { 
    while($row = mysqli_fetch_array($query)) { 
     if ($row['status'] == "Opened") { 
      $test = "1"; 
     } else { 
      $test = "0"; 
     } 
    } 
} 
echo $test; 

当有数据库中的多个条目和这些条目的一个没有状态=“打开”,因此$测试返回“0”出现问题。我试图完成的是,如果任何条目的状态=“已打开”,则$ test将返回“1”。

再次感谢您的帮助!

+0

你不应该用php中的循环来做这件事。您应该使用数据库中的单个查询来完成此操作。 –

+0

我会研究一下,谢谢! – user3724476

+0

这将取决于查询是为了什么,你没有发布。 –

回答

2

从数据库中直接选择需要的数据可能会更好,而不是用PHP过滤出来。

SELECT id, message, etc FROM tickets WHERE status = 'Opened' 
// if it fetches data, you have open tickets and have directly access to the data of the open tickets. 

SELECT count(*) AS total FROM tickets WHERE status = 'Opened' 
// the result of this is a number of the total amount of opened tickets, perhaps better for this specific use. 

但对如何解决你的循环的主题,你可以做到以下几点:

$open = false; 

while($row = mysqli_fetch_array($query)) { 
    if ($row['status'] == "Opened") { 
     $open = true; 
     break; 
    } 
} 

由于这将退出while循环,获得进一步的使用设置$open

if($open){ 
    // do your stuff; 
} 
+0

谢谢!这对我有效。 – user3724476

2

所有你需要做的是以下几点:

$query = "SELECT `status` FROM `table` WHERE `status` = 'Opened'"; 
$result = mysqli_query($conn, $query); 
$test = (mysqli_num_rows($result) > 0) ? 1 : 0; 

无需取出,它会更快了。

+0

经过测试,它只返回值“0”。 – user3724476

+0

仔细检查您的餐桌,因为此代码正确 – meda