User2325976
User2325976

Reputation: 5

PHP not returning false value

I have written a piece of code for coupon. whenever I use the function to check if the Coupon Code exists, it returns true and prints the statement. But I can't get the false return and cannot get the statement printed for false case.

function db_connect() {
  static $connection;
  if (!isset($connection)) {
    $connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  }
  if ($connection === false) {
    return mysqli_connect_error();
  }
  return $connection;
}

function db_query($query) {
  $connection = db_connect();
  $result = mysqli_query($connection, $query);
  return $result;
}

function db_error() {
  $connection = db_connect();
  return mysqli_error($connection);
}

function db_select($query) {
  $rows = array();
  $result = db_query($query);
  if ($result === false) {
    return false;
  }
  while ($row = mysqli_fetch_assoc($result)) {
    $rows[] = $row;
  }
  return $rows;
}

function db_rows($query) {
  $result = db_query($query);
  if ($result === false) {
    return false;
  }
  $total_rows = mysqli_num_rows($result);
  return $total_rows;

}

function couponExists($cc) {
  $results = db_rows("SELECT * from ms_coupons where coupon_code='".$cc."'") or die(db_error());
  if ($results > 0) {
    return true;
  } else {
    return false;
  }
}

DB table : ms_coupons
coupon_id  coupon_code
1          CODE50

check_coupon.php

$coupon = $_REQUEST['coupon_code'];
if (!couponExists($coupon)) {
  echo "Does not exist!";
} else {
  echo "Coupon exists!";
}

when i supply coupon_code as CODE50 it prints, Coupon exists! but when i supply something different like CODE51 then the pays prints nothing.

Upvotes: 0

Views: 87

Answers (1)

shaggy
shaggy

Reputation: 1718

Your problem is with this line in your code:

$results = db_rows("SELECT * from ms_coupons where coupon_code='".$cc."'") or die(db_error());

db_rows function returns number of rows, in your case it can be only two values - 1 or 0. If db_rows return 0 your script executes the die(db_error()) part (but there is no mysqli_error).

Remove the or die(db_error()) part, like this:

$results = db_rows("SELECT * from ms_coupons where coupon_code='".$cc."'");

If you want to check for mysqli_errors, move it to your db_query function.

Upvotes: 1

Related Questions