@Gristen

Вывод данных из БД через Pdo?

Новичок , писал регистрацию и авторизацию на mysql , узнал что старье и нужно переходить на PDO , решил переписать код с mysql на PDO и столкнулся с проблемой . Во время регистрации я хочу вытянуть ID пользователя из бд , записать в сессию и вывести эту сессию в файлу profile.php , но у меня не выходит , ничего не выводится . вардампил , возвращает пустой массив . Код :

$user = $dbh->prepare("SELECT * FROM `users` WHERE `email` = :email ");
$user->execute([
	"email" => $email,
]);
$user = $user->fetchAll();

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

var_dump($_SESSION['id']);

var_dump показывает NULL
  • Вопрос задан
  • 172 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rst0
@Rst0
примерно так
define( "DB_HOST", 'localhost' );
define( 'DB_NAME', '' );  // заполнить
define( 'DB_USER', '' );
define( 'DB_PASSWORD', '' );
define( 'DB_CHARSET', 'utf8mb4' );

$host_db = DB_HOST;
$name_db = DB_NAME;
$user_db = DB_USER;
$pass_db = DB_PASSWORD;
$char_db = DB_CHARSET;

$dsn = "mysql:host=$host_db;dbname=$name_db;charset=$char_db";

$options=[
	PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
	PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
	PDO::ATTR_EMULATE_PREPARES   => false,
];

try{

$dbh = new PDO($dsn,$user_db,$pass_db,$options);

}catch(

PDOException $e){

	die("NO CONNECT -- ". $e->getMessage());

}



function db_user($email){ 
      global $dbh;
      $user = $dbh->prepare("SELECT * FROM `users` WHERE `email` = :email ");
      $user->execute([
           "email" => $email,
      ]);
      $result = $user->fetchAll();
      return (count($result) > 0) ? $result : []; // <-- многомерный массив! , т.к. возможны юзеры с одинаковой почтой
}

$email = ''; // искомая почта
$users = db_user($email);
 
   $_SESSION['id'] = isset($users[0]['id']) ? $users[0]['id'] : '0'; // в сессию id первого попавшегося или 0 

   echo var_export($users,1);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы