2017-03-16 138 views
0

我写了一张优惠券代码。每当我使用函数来检查优惠券代码是否存在时,它将返回true并打印该语句。但我无法得到虚假的回报,也无法获得印刷为虚假情况的陈述。PHP没有返回虚假值

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!"; 
} 
当我提供COUPON_CODE为CODE50它打印

,优惠券存在!但是当我提供与CODE51不同的东西时,付款不会打印任何东西。

+0

“不打印任何东西”表示可能有错误。 PHP日志中是否有任何内容?当您启用错误报告时,页面上是否显示任何内容?也许在整个预期逻辑中放置一系列'echo'语句,以更具体地查看它偏离预期路径的位置? – David

+0

你现在有没有检查时,0的mysql num rows将等于false。如此多的代码...... – JustOnUnderMillions

+3

不会死或死(db_error());'也死于0结果时?数据库错误也是空的,所以没有打印。 – apokryfos

回答

1

你的问题是这一行代码:

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

db_rows函数返回的行数,在你的情况下,它只能是两个值 - 或。如果db_rows返回0,则脚本执行die(db_error())部分(但不存在mysqli_error)。

取出or die(db_error())部分,像这样:

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

如果你想检查mysqli_errors,将其移动到您的db_query功能。

+0

你真的有犀利的眼睛 – C2486