简体   繁体   中英

Check if MySQL Column is empty

I'm working on a page, where users post their betting picks. In MySQL I have the table bets (id, event, pick, odds, stake, analysis, status, profit).

I would like to check if 'status' is empty in MySQL, but the if() statement is not working. If it's empty, it should output all the bets from a user. The code posted is in a for loop.

So what is wrong with the if() statement? And is there any better way to do this?

$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) ;
}

Use mysqli_num_rows() . If its greater then 0 then we can say that query containing result so we can further proceed.

$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) ;
  }
}

For status check you can use any of below method

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

OR

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

If it's empty , it should output all the bets from a user. The code posted is in a for loop.

Since you are checking if it's empty, your if statement should be the other way round:

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

Alternatively, you can use mysqli_num_rows() get the number of rows:

Returns the number of rows in the result set.

$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) ;
}

Also, there isn't such function called queryMysql() :

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

It should be mysqli_query() . For mysqli_query() , the connection parameter is needed.

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

You are using identical comparison, which would check for type & value both. === or !== as this involves comparing the type as well as the value.

Instead try -

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

Or

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM