为什么我会收到警告:使用PDO :: fetchColumn时非法字符串偏移?

时间:2016-02-19 19:06:16

标签: php mysql pdo

如果用户没有上传个人资料照片,我会尝试输出用户个人资料图片或显示虚拟图片。从数据库中提取此信息的查询工作正常。我使用了“如果'用于检查行是否包含值的语句,这一直有效,直到我尝试从数据库中回显某些内容,例如文件路径。然后我收到了这个错误:

  

警告:非法字符串偏移

此外,图片无法显示,我

  

找不到对象

请参阅下面的代码。我很感激任何建议。

$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";
}

1 个答案:

答案 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,则需要执行以下两项操作之一:

  1. 修改您的查询,使其仅提取您想要的列, 而不是使用fetchColumn()。然后你的代码需要

    *
  2. $query = $db->query("SELECT profile_pic from members..."); $src = $query->fetchColumn(); if ($src) { echo '<img width="100" height="100" src="'.$src.'"/>'; 添加一个数字,表示您想要的列 获取。然后你的代码需要

    fetchColumn()
  3. 其中任何一个都应该有用。但是我还要提一下,如果你想使用查询中的任何其他列,你不应该使用$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