Php PDO/MySQL使用if语句获取多个列

Php PDO/MySQL使用if语句获取多个列,php,mysql,if-statement,pdo,Php,Mysql,If Statement,Pdo,我目前正试图从我的数据库中获取两个图像位置,如何返回两列,如果两列都为空,则返回另一个图像。这就是我到目前为止得到的。 我如何返回photo和photo_small,以便在php文件中回传它们 PUBLIC FUNCTION Profile_Pic($uiD) { $sth = $this->db->prepare("SELECT photo,photo_small FROM users WHERE uiD = :id"); $sth->execute(arra

我目前正试图从我的数据库中获取两个图像位置,如何返回两列,如果两列都为空,则返回另一个图像。这就是我到目前为止得到的。 我如何返回photo和photo_small,以便在php文件中回传它们

PUBLIC FUNCTION Profile_Pic($uiD) {
    $sth = $this->db->prepare("SELECT photo,photo_small FROM users WHERE uiD = :id");
    $sth->execute(array(':id' => $uiD));

        if ($sth->rowCount() > 0) {
                $data = $row['photo'];
            return $data; 
        } else {
            $data = './icons/users.png';
            return $data;
        } 
    }
  • 只需返回数组中所需的所有值

  • 通过使用,可以确保
    photo
    photo\u small
    都不是空字符串或
    NULL

  • 不要忘记使用检索行

  • 您不应该使用
    rowCount()
    来确定
    SELECT
    语句中返回的行数。根据以下文件:

    对于大多数数据库,PDOStatement::rowCount()不返回受SELECT语句影响的行数

  • 试试这个:

    $row = $sth->fetch(PDO::FETCH_ASSOC);
    if ($row && !empty($row['photo']) && !empty($row['photo_small'])) {
      $data = array('photo' => $row['photo'], 'photo_small' => $row['photo_small']);
      return $data; 
    } else {
      $data = array('photo' => './icons/users.png', 'photo_small' => './icons/users.png');
      return $data;
    } 
    
    然后调用函数时,返回的结果可以如下使用:

    $uiD = 1;
    $result = Profile_Pic($uiD);
    $photo = $result['photo'];
    $photo_small = $result['photo_small'];
    
  • 只需返回数组中所需的所有值

  • 通过使用,可以确保
    photo
    photo\u small
    都不是空字符串或
    NULL

  • 不要忘记使用检索行

  • 您不应该使用
    rowCount()
    来确定
    SELECT
    语句中返回的行数。根据以下文件:

    对于大多数数据库,PDOStatement::rowCount()不返回受SELECT语句影响的行数

  • 试试这个:

    $row = $sth->fetch(PDO::FETCH_ASSOC);
    if ($row && !empty($row['photo']) && !empty($row['photo_small'])) {
      $data = array('photo' => $row['photo'], 'photo_small' => $row['photo_small']);
      return $data; 
    } else {
      $data = array('photo' => './icons/users.png', 'photo_small' => './icons/users.png');
      return $data;
    } 
    
    然后调用函数时,返回的结果可以如下使用:

    $uiD = 1;
    $result = Profile_Pic($uiD);
    $photo = $result['photo'];
    $photo_small = $result['photo_small'];
    
    如果要替换两个图像(即使其中一个图像不存在)

    PUBLIC FUNCTION Profile_Pic($uiD) {
        $sql = "SELECT photo,photo_small FROM users WHERE uiD = ?";
        $sth = $this->db->prepare($sql);
        $sth->execute(array($uiD));
        $data = $sth->fetch();
        if (empty($data['photo']) || empty($data['photo_small'])) {
            $data['photo'] = './icons/users.png';
            $data['photo_small'] = './icons/users.png';
        }
        return $data;
    }
    
    如果要替换两个图像(即使其中一个图像不存在)

    PUBLIC FUNCTION Profile_Pic($uiD) {
        $sql = "SELECT photo,photo_small FROM users WHERE uiD = ?";
        $sth = $this->db->prepare($sql);
        $sth->execute(array($uiD));
        $data = $sth->fetch();
        if (empty($data['photo']) || empty($data['photo_small'])) {
            $data['photo'] = './icons/users.png';
            $data['photo_small'] = './icons/users.png';
        }
        return $data;
    }
    

    这已经奏效了。我不明白你为什么得到-1分。为什么要在数组中返回它,而不仅仅是提取数据?@iBrazilian-请参阅我关于使用
    fetchColumn()
    的评论。fetchColumn似乎不起作用。我删除了if参数中的fetch,因为它已经在它之外定义了,但是它不返回数据库信息。仅加载icons/users.png。注意:我尝试了原始的和没有在if内提取的两种方法。@iBrazilian-我简化了我的答案,只需对照
    $row
    的布尔值进行检查。如果没有返回任何行,则应将其计算为
    FALSE
    @iBrazilian-没问题:)很乐意提供帮助。这已奏效。我不明白你为什么得到-1分。为什么要在数组中返回它,而不仅仅是提取数据?@iBrazilian-请参阅我关于使用
    fetchColumn()
    的评论。fetchColumn似乎不起作用。我删除了if参数中的fetch,因为它已经在它之外定义了,但是它不返回数据库信息。仅加载icons/users.png。注意:我尝试了原始的和没有在if内提取的两种方法。@iBrazilian-我简化了我的答案,只需对照
    $row
    的布尔值进行检查。如果没有返回行,则应将其计算为
    FALSE
    @iBrazilian-没问题:)乐意帮助。是的,工作正常。谢谢,我理解你现在所做的。你在if语句中缺少了一个右括号。总的来说,完美的答案。是的,完美无瑕。谢谢,我理解你现在所做的。你在if语句中缺少了一个右括号。总的来说,完美的答案。