Итак, я работаю над преобразованием старого учебника, который я сделал некоторое время назад от mySQL
до PDO
. Таким образом, я могу лучше понять концепции. Кажется, я, похоже, столкнулся с стеной. Следующая функция дает мне ошибкупреобразование в PDO, проблемы
function user_data($user_id, $db) {
$data = array();
$user_id = (int)$user_id;
$func_num_args = func_num_args();
$func_get_args = func_get_args();
if($func_num_args > 1) {
unset($func_get_args[0]);
$fields = '`' . implode('`, `', $func_get_args) . '`'; // !! LINE 12
try {
$sql = sprintf('SELECT %s FROM members WHERE id = ?', $fields);
$stmt = $db->prepare($sql);
$stmt->execute(array($user_id));
$data = $stmt->fetch(PDO::FETCH_ASSOC);
return $data;
} catch(PDOException $e) {
die($e->getMessage());
}
}
}
это где я вызываю функцию
<?php
session_start();
require 'database/connect_db.php';
require 'functions/users.php';
if (signedIn() === true) {
$session_id = $_SESSION['id'];
$user_data = user_data($session_id, $db, 'email', 'password', 'role', 'name', 'company', 'title', 'phone', 'address', 'city', 'zip', 'state', 'ext', 'pic');
echo $user_data['name'];
}
?>
это моя ошибка
Catchable fatal error: Object of class PDO could not be converted to string in C:\xampp\htdocs\core\functions\users.php on line 12
Так более конкретно эта линия, как прокомментировал в функция выше
$fields = '`' . implode('`, `', $func_get_args) . '`';
Я не понимаю, почему эта строка вызывает эту ошибку. Я также не знаю, как это исправить. Любая помощь приветствуется.
Я думаю, что 'unset ($ func_get_args [0]);' должно быть 'unset ($ func_get_args [1]);'. Вы 'unset'ting $ user_id вместо $ db – Mike
@Mike вы были правы –