无法错误检查/验证条件mysqlPDO PHP查询

无法错误检查/验证条件mysqlPDO PHP查询,php,mysql,pdo,Php,Mysql,Pdo,我一辈子都搞不懂为什么这个检查在手动mySQL查询中显示为TRUE/present numrows=1时会返回FALSE numrows=0 $sqlPSLocumCheck="SELECT COUNT(assignedRad) FROM rads.nia_sched_master_2017 WHERE ((assignedRad = :locumNarine OR assignedRad = :locumShewchen) AND thedate = :thedate)"; $stmtPSLo

我一辈子都搞不懂为什么这个检查在手动mySQL查询中显示为TRUE/present numrows=1时会返回FALSE numrows=0

$sqlPSLocumCheck="SELECT COUNT(assignedRad) FROM rads.nia_sched_master_2017 WHERE ((assignedRad = :locumNarine OR assignedRad = :locumShewchen) AND thedate = :thedate)";
$stmtPSLocumCheck = $dbh->prepare($sqlPSLocumCheck);
$locumNarine=13;
$locumShewchen=14;
$stmtPSLocumCheck->bindParam(':locumNarine', $locumNarine);
$stmtPSLocumCheck->bindParam(':locumShewchen', $locumShewchen);
$numrowsPSLocumCheck = $stmtPSLocumCheck->fetchColumn();
if($numrowsPSLocumCheck>0){
    $psLocumPresent=1;
}else{
    $psLocumPresent=0;
}
echo '<p>'.$sqlPSLocumCheck.'</p>';
它返回assignedRad 13今天工作的结果

但psocompresent美元一直等于0


有什么帮助吗?

您不必在任何地方执行查询,所以不会得到结果。将代码更改为

$sqlPSLocumCheck="SELECT COUNT(assignedRad) FROM rads.nia_sched_master_2017 WHERE ((assignedRad = :locumNarine OR assignedRad = :locumShewchen) AND thedate = :thedate)";
$stmtPSLocumCheck = $dbh->prepare($sqlPSLocumCheck);
$locumNarine=13;
$locumShewchen=14;
$stmtPSLocumCheck->bindParam(':locumNarine', $locumNarine);
$stmtPSLocumCheck->bindParam(':locumShewchen', $locumShewchen);
$stmtPSLocumCheck->execute(); //execute query
$numrowsPSLocumCheck = $stmtPSLocumCheck->fetchColumn();
if($numrowsPSLocumCheck>0){
    $psLocumPresent=1;
}else{
    $psLocumPresent=0;
}
echo '<p>'.$sqlPSLocumCheck.'</p>';
您必须在bindParam中设置:日期,因为您在查询中定义了该日期。 B.Desai还说,正确的话,您必须使用$stmt->execute;在bindParam之后

       $sqlPSLocumCheck="SELECT COUNT(assignedRad) FROM rads.nia_sched_master_2017 WHERE ((assignedRad = :locumNarine "
               . "                      OR assignedRad = :locumShewchen) AND thedate = :thedate)";
                                        $stmtPSLocumCheck = $dbh->prepare($sqlPSLocumCheck);
                                        $locumNarine=13;
                                        $locumShewchen=14;
                                        $stmtPSLocumCheck->bindParam(':locumNarine', $locumNarine);
                                        $stmtPSLocumCheck->bindParam(':locumShewchen', $locumShewchen);
                                        $stmtPSLocumCheck->bindParam(':thedate', $thedate);///you must set this variable because you define it in your query
                                        $numrowsPSLocumCheck = 
$stmtPSLocumCheck->execute(); //execute query
$stmtPSLocumCheck->fetchColumn();

                                        if($numrowsPSLocumCheck>0){
                                            $psLocumPresent=1;
                                        }else{
                                            $psLocumPresent=0;
                                        }
                                        echo '<p>'.$sqlPSLocumCheck.'</p>';

dievar_dump$numrowspsocomcheck;告诉我们它给了你什么,你在哪里执行你的查询?太傻了!谢谢我忘了execute@bobafart接受一个答案会很好,因为即使他们两人都详细地告诉过你,问题是不是在撒谎。这将帮助将来阅读此页面的用户根据为您的问题提供的解决方案找到他们的解决方案。
       $sqlPSLocumCheck="SELECT COUNT(assignedRad) FROM rads.nia_sched_master_2017 WHERE ((assignedRad = :locumNarine "
               . "                      OR assignedRad = :locumShewchen) AND thedate = :thedate)";
                                        $stmtPSLocumCheck = $dbh->prepare($sqlPSLocumCheck);
                                        $locumNarine=13;
                                        $locumShewchen=14;
                                        $stmtPSLocumCheck->bindParam(':locumNarine', $locumNarine);
                                        $stmtPSLocumCheck->bindParam(':locumShewchen', $locumShewchen);
                                        $stmtPSLocumCheck->bindParam(':thedate', $thedate);///you must set this variable because you define it in your query
                                        $numrowsPSLocumCheck = 
$stmtPSLocumCheck->execute(); //execute query
$stmtPSLocumCheck->fetchColumn();

                                        if($numrowsPSLocumCheck>0){
                                            $psLocumPresent=1;
                                        }else{
                                            $psLocumPresent=0;
                                        }
                                        echo '<p>'.$sqlPSLocumCheck.'</p>';