选择计数在准备好的语句中不起作用[已解决]

问题描述 投票:0回答:1

将工作选择计数sql更改为准备好的语句后,它始终给出空结果。当我为真实数据替换占位符时,我得到正确的结果。因此,我怀疑绑定值存在问题,但是根本看不出问题可能是什么?我试过$ aData = $ stmt-> fetchAll()和$ count = $ stmt-> fetchColumn()。两者都给出空结果。另外,只需选择*(忽略计数)即可得到空结果。

预期结果:alUitgenodigd:3

function al_uitgenodigd($dbh,$uitdagerID,$uitgedaagdeID){

echo '<br>F:'.$uitdagerID; // correct on screen
echo '<br>F:'.$uitgedaagdeID; // correct on screen

/* prevent multiple pending requests between two players with the same originator */

$sql = "SELECT COUNT(*) AS alUitgenodigd 
        FROM games
        WHERE
            gameMessage = 'playerInvited'
            AND 
            (
                (messageFrom = 'white' AND whitePlayer = :uitdagerID AND blackPlayer = :uitgedaagdeID)
                OR
                (messageFrom = 'black' AND whitePlayer = :uitgedaagdeID AND blackPlayer = :uitdagerID)

            ) ";

// prepare
$stmt = $dbh->prepare($sql);

// bind values
$stmt->bindValue(':uitdagerID', $uitdagerID);
$stmt->bindValue(':uitgedaagdeID', $uitgedaagdeID);

//$aData = $stmt->fetchAll();

//return $aData; // empty array

$count = $stmt->fetchColumn();

echo 'Test: '.$count; // empty $count

if($count >= 1 ){return true;}

return false;
}

原始功能仍然有效:

 function al_uitgenodigd($uitdager,$uitgedaagde)
{
    /* prevent multiple pending requests between two players with the same originator */
    $q = "SELECT COUNT(*) AS alUitgenodigd 
            FROM games
            WHERE
                gameMessage = 'playerInvited'
                AND (
                    (messageFrom = 'white' AND whitePlayer = '".$uitdager."' AND blackPlayer = '".$uitgedaagde."')
                    OR 
                    (messageFrom = 'black' AND whitePlayer = '".$uitgedaagde."' AND blackPlayer = '".$uitdager."'))";
    if(onevalue($q) > 0)
        return true;
    return false;
}

我没咖啡了。因此,非常感谢您提供任何帮助!

mysql sql pdo prepared-statement
1个回答
0
投票

((shame,shame,shame)=>花2个小时,因为我只是忘记了execute()......问题现在解决了。

© www.soinside.com 2019 - 2024. All rights reserved.