检查MySQL列是否为空

时间:2016-04-19 09:06:23

标签: php mysql

我正在一个页面上,用户发布他们的投注选择。在MySQL中,我有表格下注(id,事件,选择,赔率,赌注,分析,状态,利润)。

我想检查MySQL中'status'是否为空,但if()语句不起作用。如果它是空的,它应该输出用户的所有赌注。发布的代码是for循环。

那么if()声明有什么问题?还有更好的方法吗?

$result = queryMysql("SELECT * FROM bets WHERE user='$user'");
$row = mysqli_fetch_array($result);

if ('' !== $row['status']) {
    echo  "Status: " . $status . "</div>" .
    "Published by: " . $user . "<br>" .
    "PICK: " . $pick . "<br>" .
    "Odds: " . $odds . "<br>" .
    "Stake: " . $stake . "<br>" .
    nl2br($analysis) ;
}

3 个答案:

答案 0 :(得分:3)

使用mysqli_num_rows()。如果它大于0,那么我们可以说包含结果的查询,以便我们可以进一步继续。

$result = queryMysql("SELECT * FROM bets WHERE user='$user'");
if(mysqli_num_rows($result) > 0)
{
  $row = mysqli_fetch_array($result);

  if ($row['status'] != "") {
  echo  "Status: " . $status . "</div>" .
  "Published by: " . $user . "<br>" .
  "PICK: " . $pick . "<br>" .
  "Odds: " . $odds . "<br>" .
  "Stake: " . $stake . "<br>" .
  nl2br($analysis) ;
  }
}

对于状态检查,您可以使用以下任何一种方法

if ($row['status'] != "") { }

OR

if (!empty($row['status'])) { }

答案 1 :(得分:2)

  

如果为空,则应输出用户的所有赌注。发布的代码是for循环。

由于您正在检查它是否为空,因此您的if声明应该是相反的:

if ($row['status'] == '') {

或者,您可以使用mysqli_num_rows()获取行数:

  

返回结果集中的行数。

$result = queryMysql("SELECT * FROM bets WHERE user='$user'");

if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_array($result);
    echo  "Status: " . $status . "</div>" .
    "Published by: " . $user . "<br>" .
    "PICK: " . $pick . "<br>" .
    "Odds: " . $odds . "<br>" .
    "Stake: " . $stake . "<br>" .
    nl2br($analysis) ;
}

此外,还没有这样的函数queryMysql()

$result = queryMysql("SELECT * FROM bets WHERE user='$user'");

应该是mysqli_query()。对于mysqli_query(),需要连接参数。

$result = mysqli_query($conn, "SELECT * FROM bets WHERE user='$user'");

答案 2 :(得分:2)

您正在使用identical比较,这会检查type&amp; value两者。 ===!==,因为这涉及比较类型和价值。

而是尝试 -

if (!empty($row['status'])) { // assuming status would hold only strings (not false/0 etc)

或者

if ($row['status'] != '') {