PHP从MYSQL中选择图像

时间:2014-04-27 12:22:34

标签: php

我的目标是显示来自MSQL“images / upload / ...的图像 但我的代码说我有一个未定义的错误:

        $user_id = $_SESSION['user']['id'];
    $caminhoImagem = $_SESSION['user']['imagem_perfil'];

    if(DBGetImagemDoUser($user_id) == True)

有人可以帮助我吗?

所有代码:

$user_id = $_SESSION['user']['id'];
$caminhoImagem = $_SESSION['user']['imagem_perfil'];

if (DBGetImagemDoUser($user_id) == True) {
    echo "<p class='pull-right'><img src='" . $caminhoImagem . "'>  </p>";
}

function DBGetImagemDoUser($user_id)
{
    //SELECT imagem_perfil FROM users WHERE id={$id_do_user}

    global $host, $dbname, $username, $password, $options;
    $dbh = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password);
    $procurarUser = $dbh->prepare("SELECT imagem_perfil FROM users WHERE id='user_id'");
    $procurarUser->execute();
    $checkUser = $procurarUser->fetchAll();
    //$caminhoImagem = DBGetImagemDoUser['imagem_perfil'];

    if (count($caminhoImagem) > 0) {
        $user_id = $caminhoImagem['imagem_perfil'];
    } else {
        return False;
    }
    return $user_id;
}

2 个答案:

答案 0 :(得分:0)

我不确定这是否是您所有问题的解决方案,因为我完全不理解您的问题,但这一行是错误的

 $procurarUser = $dbh->prepare("SELECT imagem_perfil FROM users WHERE id='user_id'");

应该是

$ procurarUser = $ dbh-&gt; prepare(“SELECT imagem_perfil FROM users WHERE id ='$ user_id'”);

第二回答: 您的问题是可变范围。

从函数内部看不到$ caminhoImagem。

此外,您还没有从数据库中检索到的值并以任何方式返回它。这不是一个非常优雅的解决方案,但它适合您的原始脚本,只需要很少的更改。

$user_id = $_SESSION['user']['id'];
$caminhoImagem = '';

if (DBGetImagemDoUser($user_id) !== false) {
    echo "<p class='pull-right'><img src='" . $caminhoImagem . "'>  </p>";
}

function DBGetImagemDoUser($user_id)
{
    global $host, $dbname, $username, $password, $options, $caminhoImagem;

    $dbh = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password);
    $procurarUser = $dbh->prepare("SELECT imagem_perfil FROM users WHERE id='$user_id'");
    $procurarUser->execute();
    $Users = $procurarUser->fetch();

    if ( $users === false ) {
        return false;
    } else {
        $caminhoImagem = $Users['imagem_perfil'];
    }
    return true;
}

答案 1 :(得分:0)

尝试:

$procurarUser = $dbh->prepare("SELECT imagem_perfil FROM users WHERE id=?");

$procurarUser->bind_param('s', $user_id);

$procurarUser->execute();

bind_param()用于将其参数值绑定到“?”插入查询中,并遵循字符串中指示的以下格式(此处我们使用“ s”表示字符串)