Don_Donald
@Don_Donald

В чем ошибка при вывода данных из БД?

Весь код
$host = 'localhost';
$database = 'data';
$user = 'root';
$pass = '';
$dsn = "mysql:host=$host;dbname=$database;";
$options = array(
  PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $user, $pass, $options);
$sql = $pdo->prepare("SELECT login FROM dataname WHERE id");
$sql->execute([$id]);
$data = $sql->fetch();
echo $data['login'];

все происходит нормально, показывает логин из БД, но если я подставляю в эту строку плейсхолдер
$sql = $pdo->prepare("SELECT login FROM dataname WHERE id = ?");

то нечего не выводит.
Подскажите пожалуйста в чем причина, и что то я не правильно делаю?
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
@Hellows
$sql = $pdo->prepare('SELECT login FROM users WHERE id=?');
	if ( $sql->execute(array($_GET['name'])) )
	{
	  while ($row = $sql->fetchAll())
	  {
		 print_r($row);
	  }
	}

Результат prntscr.com/9ru08u
Либо
$sql = $pdo->prepare('SELECT login FROM users WHERE id=?');
  $sql->bindValue(1, $_GET['name']);
  $sql->execute();
  $data = $sql->fetch();

Результат prntscr.com/9ru14y
Либо
$sql = $pdo->prepare('SELECT login FROM users WHERE id=:id');
  $sql-> execute(array(':id' => (int)$_GET['name']));
  $data = $sql->fetchAll();

Результат prntscr.com/9ru95k
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@StrikeBack
В документации написано, в метод execute необходимо передавать массив, попробуйте так:
$sql->execute(array([$id]));
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы