在php函数中使用sql查询获取结果时出现问题

在php函数中使用sql查询获取结果时出现问题,php,Php,我有一个php函数,需要检查查询的结果是否小于或等于2,如果是,则可以传递到下一步,如果不是,则显示错误。我的查询工作正常,目前它显示了来自数据库的一个结果,因此函数末尾返回的变量与当前一样为false。在我的代码中,我在函数上加了否定(with!),然后加了一些错误消息。但它目前似乎没有发挥应有的作用。感谢您的帮助。这是我的密码 作用 function isUniqueOrValidCC($cc) { $tmpret=true; $ccn=ccnCrypt($cc);

我有一个php函数,需要检查查询的结果是否小于或等于2,如果是,则可以传递到下一步,如果不是,则显示错误。我的查询工作正常,目前它显示了来自数据库的一个结果,因此函数末尾返回的变量与当前一样为false。在我的代码中,我在函数上加了否定(with!),然后加了一些错误消息。但它目前似乎没有发挥应有的作用。感谢您的帮助。这是我的密码

作用

function isUniqueOrValidCC($cc) {

    $tmpret=true;
    $ccn=ccnCrypt($cc);
    $q = "select count(mid) number from billing where card='$ccn' group by mid";

    if($r_ptr=q($q)) {
        while($r = mysql_fetch_assoc($r_ptr)) {
            $tmpret = $r<=2;
        }
        mysql_free_result($r_ptr);
    }
    var_dump($tmpret); die('!!!'); // WHEN I DUMP HERE I GET FALSE (IN DATABASE I HAVE ONE RECORD)
    return $tmpret;
}

我知道这不是最好的代码,将来我会更改它,但目前我需要帮助解决这个问题。

看起来您不打算将数组与数字进行比较。您需要的是从结果集中获取值。因为您只需要一个值,所以不需要
while
循环

function isUniqueOrValidCC($cc) {
    $ccn = ccnCrypt($cc);
    $q = "select count(mid) number from billing where card='$ccn' group by mid";

    if($r_ptr = q($q)) {
        $r = mysql_fetch_assoc($r_ptr);
        return $r && $r['number'] <=2;
    }
    return true;
}
函数为uniqueorvalidcc($cc){
$ccn=ccn加密($cc);
$q=“从账单中选择计数(mid)编号,其中卡=“$ccn”按mid分组”;
如果($r_ptr=q($q)){
$r=mysql\u fetch\u assoc($r\u ptr);

return$r&&$r['number']警告:
mysql.*
扩展从PHP 5.5.0开始就被弃用,从PHP 7.0.0开始被删除。相反,应该使用或扩展。在选择mysql API时,另请参阅以获取更多帮助。PHP 5已经多年不受支持。请尽快更改它。执行
var\u转储($r)
在循环内部,检查您实际比较的内容。考虑到您使用的是
mysql\u fetch\u assoc()
,它应该是一个数组。因此
$r
mysql\u fetch\u assoc()
实际上返回一个数组,类似这样:
$r['number']
,我想你希望得到一个数字?好的,我明白了。你不想与数组进行比较。你希望从查询中得到一个结果。然后你需要在
时删除整个
,只要使用
mysql\u fetch\u assoc($r\u ptr)['number']
假设你的PHP版本支持它。
function isUniqueOrValidCC($cc) {
    $ccn = ccnCrypt($cc);
    $q = "select count(mid) number from billing where card='$ccn' group by mid";

    if($r_ptr = q($q)) {
        $r = mysql_fetch_assoc($r_ptr);
        return $r && $r['number'] <=2;
    }
    return true;
}