Php PDO/MySQL使用if语句获取多个列
我目前正试图从我的数据库中获取两个图像位置,如何返回两列,如果两列都为空,则返回另一个图像。这就是我到目前为止得到的。 我如何返回photo和photo_small,以便在php文件中回传它们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
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语句中缺少了一个右括号。总的来说,完美的答案。