Php 为什么fetchAll()返回空数组?

Php 为什么fetchAll()返回空数组?,php,mysql,arrays,Php,Mysql,Arrays,最终,我的目标是返回整数locationID。但是从SQL语句返回的数组为空。SQL语句只返回一行,我签入了phpMyAdmin。我还确保正确输入了我的参数。为什么数组是空的?我试图从数据库中的一个相关行返回数据,我想它应该是$result[0]或$result['cityID'](也就是我试图返回的行数据的列名称)但都不起作用,我假设是因为数组是空的,但我不明白为什么它是空的……我缺少了什么?提前谢谢 public function getLocationID($frmtCity, $frmt

最终,我的目标是返回整数locationID。但是从SQL语句返回的数组为空。SQL语句只返回一行,我签入了phpMyAdmin。我还确保正确输入了我的参数。为什么数组是空的?我试图从数据库中的一个相关行返回数据,我想它应该是$result[0]或$result['cityID'](也就是我试图返回的行数据的列名称)但都不起作用,我假设是因为数组是空的,但我不明白为什么它是空的……我缺少了什么?提前谢谢

public function getLocationID($frmtCity, $frmtState){
    $sql = 'SELECT cityID FROM city WHERE city.name = :name AND city.stateID = :state';

    $queryStmt = $this -> conn -> prepare($sql);

    if($queryStmt -> execute(array(':name'=>$frmtCity, ':state'=>$frmtState)) ){

        $result = $queryStmt -> fetchAll(PDO::FETCH_ASSOC);

        print_r($result);
    }
}

您应该尝试以下简单易行的方法:

public function getLocationID(){
$sql = 'SELECT cityID FROM city WHERE city.name = :name AND city.stateID = :state';

$queryStmt = $this -> conn -> query($sql);

if($queryStmt->rowCount() > 0) ){

    $result = $queryStmt -> fetchAll(PDO::FETCH_ASSOC);

}else{
    $result = 0;
} 
return $result;
}

@乔利亚诺苏利特,谢谢。我没有正确阅读这篇文章,但我认为他需要使用
fetch(PDO::fetch_ASSOC)
而不是
fetchAll(PDO::fetch_ASSOC)
如果得到的结果是空的,这意味着在
WHERE
中没有符合条件的行。我使用准备好的语句和execute()来防止sql注入。您的情况证明我没有返回行,但我已经知道我没有返回任何内容,即使当我在phpMyAdmin中运行SQL语句时,我返回了一行,我的朋友准备插入语句,查询正在获取、更新和删除。您需要进一步研究PDO。这永远不会起作用。除非使用准备好的查询,否则不能使用诸如
:name
之类的参数。