使用PDO和PHP函数选择数据

使用PDO和PHP函数选择数据,php,mysql,pdo,Php,Mysql,Pdo,当我尝试从bd中选择一个nome时,它不会显示任何内容 这是选择名称的函数: public function searchName(){ $db = new Conection(); $query = $db->prepare("SELECT * FROM dog WHERE id = 1"); $query->execute(); $result = $query->fetchAll(PDO::FETCH_OBJ); foreach($

当我尝试从bd中选择一个nome时,它不会显示任何内容

这是选择名称的函数:

public function searchName(){
    $db = new Conection();
    $query = $db->prepare("SELECT * FROM dog WHERE id = 1");
    $query->execute();
    $result = $query->fetchAll(PDO::FETCH_OBJ);
    foreach($result as $row)
    {
        return $row['name'];//return to getName

    }
}
以下是getName中的代码:

    require 'Conection.php';
    require 'model/Dog.php';

    $dog = new Dog;
    $res = $dog->searchName(1);

    echo $res;

类连接正常。

因为您使用了
PDO::FETCH_OBJ
您应该:

return $row->name;
既然你打电话来:

$res = $dog->searchName(1);
您的函数声明必须是:

public function searchName($id){
    $db = new Conection();
    $query = $db->prepare("SELECT * FROM dog WHERE id = ?");
    $query->bindParam(1,$id);
    $query->execute();

您的代码中有一些问题, 传递函数参数后,您没有使用函数参数 这里只需要返回一行 您应该使用
$query->fetch
而不是
$query->fetchAll

您的代码应该是这样的

public function searchName($id){
    $db = new Conection();
    $query = $db->prepare("SELECT * FROM dog WHERE id = :id");
    $query->execute(array('id'=>$id)); // bind parameters for security
    $result = $query->fetch(PDO::FETCH_ASSOC);     // updated object with assoc... ie if obj used than return $result->name   
    return $result['name'];            
}

echo $res = $dog->searchName(1);

PDO::FETCH_ASSOC是
$row['name']

但是
PDO::FETCH_OBJ是
$row->name


由于它是一个对象,您需要
返回$row->name这里不需要循环。我只是想确认一下。:-)刚刚和lokks确认过。如果您有任何特别的建议,您可能更喜欢:$query=$db->prepare(“SELECT*FROM dog WHERE id=:id”)$查询->bindParam(':id',$id);