0

我的问题是这个

我正在通过这个获取一个mysql行

                $sql_istorrenthere = $this->query_silent("SELECT media_type
FROM " . DB_PREFIX . "auction_media WHERE
                auction_id='" . $item_details['auction_id'] . "'"); 
$row = mysql_fetch_array($sql_istorrenthere);

然后用这个调用它

if ($row['media_type'] == 4) 
{

        $display_output = GMSG_TORRENT;}
        else
        {
        $display_output = GMSG_NOTORRENT;
        }
}

但是,media_type 有多个值,(1,2,3,4) 如何编写它以检查 4 是否存在?因为现在我相信它正在检查 media_type 是否等于 4 并且这是错误的,这给了我错误的 display_output

4

4 回答 4

1

您可以使用 mysql_num_rows 来确定是否返回了任何行,这可以通过在查询中添加搜索条件并将“AND media_type = 4”添加到末尾

if(mysql_num_rows($sql_istorrenthere)) {

} else {

}

// You can loop through records by doing the following, this prints out every media type :)
while ($row = mysql_fetch_array($sql_istorrenthere)) {
    echo $row['media_type'] . '<br />';
}
于 2012-05-05T02:15:03.163 回答
0
// Comment the next line after you get what it is
@print ("Value of media type is: >>>".$row['media_type']."<<<"); // Line to be commented

if (isset($row['media_type']) && $row['media_type'] == 4) {
  $display_output = GMSG_TORRENT;
}
else {
  $display_output = GMSG_NOTORRENT;
}

要获取所有媒体类型:

<?php
$sql_istorrenthere = $this->query_silent("SELECT media_type FROM " . DB_PREFIX . "auction_media"); 
while ($row = mysql_fetch_array($sql_istorrenthere)) {
// Comment the next line after you get what it is
  @print ("Value of media type is: >>>".$row['media_type']."<<<"); // Line to be commented

  if (isset($row['media_type']) && $row['media_type'] == 4) {
    $display_output = GMSG_TORRENT;
  }
  else {
    $display_output = GMSG_NOTORRENT;
  }

}
于 2012-05-05T02:15:59.530 回答
0

您可以在查询中添加“AND media_type = '4'”。但是你真的应该使用参数化查询。

一旦您的查询具有“AND media_type = '4'”,您就可以检查 RowCount。

于 2012-05-05T02:16:08.517 回答
0

可能有更好的方法,但这里有一个想法。

$media_type_ids = explode(',', $row['media_type']);
if (array_search(4, $media_type_ids) !== FALSE) {
    // found
}

甚至可以在数据库查询中就地执行此操作……可能。

于 2012-05-05T02:17:11.027 回答