如果用户没有上传个人资料照片,我会尝试输出用户个人资料图片或显示虚拟图片。从数据库中提取此信息的查询工作正常。我使用了“如果'用于检查行是否包含值的语句,这一直有效,直到我尝试从数据库中回显某些内容,例如文件路径。然后我收到了这个错误:
警告:非法字符串偏移
此外,图片无法显示,我
找不到对象
请参阅下面的代码。我很感激任何建议。
$query = $db->query("SELECT * from members where username = '".$_SESSION['username'] ."'");
$row = $query->fetchColumn();
if (isset($row) && $row == true) {
echo '<img width="100" height="100" src="'.$row["profile_pic"].'"/>';
} else {
echo "no profile pic";
}
答案 0 :(得分:1)
使用fetchColumn()
的好处是它返回一个值。如果只需要一列中的值,则可以通过删除引用数组键的必要性来略微简化代码。它无效,因为您使用的是Name: Compile Error
Message: <console>:108: error: overloaded method value replace with alternatives:
[T](cols: Seq[String], replacement: scala.collection.immutable.Map[T,T])org.apache.spark.sql.DataFrame <and>
[T](col: String, replacement: scala.collection.immutable.Map[T,T])org.apache.spark.sql.DataFrame <and>
[T](cols: Array[String], replacement: java.util.Map[T,T])org.apache.spark.sql.DataFrame <and>
[T](col: String, replacement: java.util.Map[T,T])org.apache.spark.sql.DataFrame
cannot be applied to (String, scala.collection.mutable.Map[Double,Double])
val dx = df.na.replace(column, Map(0.0 -> doubleValue))
^
而$row["profile_pic"]
不是数组。
如果您要使用$row
,则需要执行以下两项操作之一:
修改您的查询,使其仅提取您想要的列,
而不是使用fetchColumn()
。然后你的代码需要
*
在$query = $db->query("SELECT profile_pic from members...");
$src = $query->fetchColumn();
if ($src) {
echo '<img width="100" height="100" src="'.$src.'"/>';
添加一个数字,表示您想要的列
获取。然后你的代码需要
fetchColumn()
其中任何一个都应该有用。但是我还要提一下,如果你想使用查询中的任何其他列,你不应该使用$query = $db->query("SELECT * from members...");
$src = $query->fetchColumn(4);
// or whatever the numeric index of the column you want is
if ($src) {
echo '<img width="100" height="100" src="'.$src.'"/>';
,因为一旦你完成了这个,你将无法访问你的那一行中的任何其他列。查询结果。如果是这种情况,您可以从
fetchColumn()
到
$row = $query->fetchColumn();
然后,您仍然可以从该行中获取其他列,并且您仍然可以像在原始代码中一样使用$row = $query->fetch(PDO::FETCH_ASSOC);
。
为了解决您的评论,如果数据库中没有显示默认图像,我建议这样做以显示默认图像的方法是将$row["profile_pic"]
设置为默认图像路径(如果它是空的,如这样:
$src