如何从php会话获取mysql user_id?

时间:2019-03-30 11:00:10

标签: php mysql

在我的代码中,我使用$ user_id = $ _SESSION [“ USER_ID”];获取有效的用户ID。如果我在PHP中使用echo函数,它将显示正确的id,但是当我尝试在查询中使用它时,它表明它是未定义的。

我将XAMPP用于:     PHP 7.1.27,7.2.16,7.3.3     阿帕奇2.4.38     玛丽亚数据库10.1.38     Perl 5.16.3     OpenSSL 1.0.2r(仅UNIX)     phpMyAdmin 4.8.5

$user_id = $_SESSION["USER_ID"];

// Funkcija prebere oglase iz baze in vrne polje objektov

function get_oglasi(){
    global $conn;
    $query = "SELECT * FROM ads WHERE user_id= echo '$user_id'; ";
    $res = $conn->query($query);
    $oglasi = array();
    while($oglas = $res->fetch_object()){
        array_push($oglasi, $oglas);
    }
    return $oglasi;
}

我期望$ user_id = 17的输出,但我收到未定义的错误消息。但是,如果我尝试<p>Opis: <?php echo $user_id;?></p>,我会得到正确的数字。

3 个答案:

答案 0 :(得分:0)

您需要将$ user_id设为全局全局$ user_id;因为您在函数中使用它,并且它是在函数外部定义的。

答案 1 :(得分:0)

或将参数传递给函数,然后您将获得函数内部的ID 函数get_oglasi($ id)

答案 2 :(得分:0)

在php中,如果没有全局声明或发送给函数参数,则无法读取变量。 请像下面的代码一样设置此会话user_id

 $user_id = $_SESSION["USER_ID"];

 function get_oglasi(){

 $user_id=$GLOBALS['user_id'];

 global $conn;
 $query = "SELECT * FROM ads WHERE user_id='$user_id'; ";
 $res = $conn->query($query);
 $oglasi = array();
 while($oglas = $res->fetch_object()){
    array_push($oglasi, $oglas);
 }
return $oglasi;
}

希望对您有所帮助。