Php PDO准备语句中的数组到字符串转换

Php PDO准备语句中的数组到字符串转换,php,mysql,pdo,Php,Mysql,Pdo,此函数用于返回已登录用户的用户名。但是,我似乎无法排除发生了什么以及为什么会出现注意:在第一条if()语句中,..中的数组到字符串转换 function getuserfield($field, $link) { $query = $link->prepare("SELECT `$field` FROM `users` WHERE `id`= :session_id"); if ($query->execute(array(':session_id'

此函数用于返回已登录用户的用户名。但是,我似乎无法排除发生了什么以及为什么会出现
注意:在第一条
if()
语句中,..
中的数组到字符串转换

function getuserfield($field, $link) {
        $query = $link->prepare("SELECT `$field` FROM `users` WHERE `id`= :session_id");
        if ($query->execute(array(':session_id' => $_SESSION['user_id']))) {
                if ($query_result = $query->fetchAll(PDO::FETCH_ASSOC)) {
                        return $query_result;
                }
        }
}
除此之外,整个页面变得不可读(就编码而言)。当然,我会这样使用它:

echo "<p>Greetings, you are logged in as:" . getuserfield('username', $link) . "</p>";
echo”您好,您的登录身份是:“。getuserfield('username',$link)。“

”;
注意:
数组到字符串的转换
表明
$\u SESSION['user\u id]
是我试图作为字符串访问的数组

$query->execute(array(':session_id' => $_SESSION['user_id']['id']))

解决了这个问题。然后用两个
foreach()
语句调用函数。

您不需要数组(':session\u id'=>$\u session['user\u id']),只需使用execute(数组($\u session['user\u id'])
警告:PDOStatement::execute:SQLSTATE[HY093]:无效参数号:未定义参数
@unixmiah是您需要
执行(数组($\u session['user_id'])
将以任何方式返回相同的通知。。