PHP MYSQL Команда Execute не извлекает данные для конкретной переменной в MYSQL - PullRequest
0 голосов
/ 08 июля 2020
//Positional Params
$emailToken = $_GET['token'];
$sql = 'SELECT * FROM signup WHERE token = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute([$emailToken]);
$message = $stmt->fetchAll();

В основном у меня есть токен электронной почты, который я анализирую из URL-адреса, и хочу проверить, существует ли он в базе данных или нет. Независимо от того, что это не будет действительным, даже если я проверил и повторил, emailToken точно такой же.

Я тестировал с другой переменной

$sql = 'SELECT * FROM signup WHERE email = ?';
$stmt->execute(['asd@gmail.com']);

И он работает. Есть идеи?

1 Ответ

1 голос
/ 08 июля 2020

Это может быть просто личное предпочтение, но мне нравится быть более конкретным c с переменными связывания, и синтаксис, кажется, никогда не подводит меня.

$emailToken = $_GET['token'];
$sql = 'SELECT * FROM signup WHERE token = :token';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':token', $emailToken, PDO::PARAM_STR);
$stmt->execute();
$message = $stmt->fetchAll();

построение строки с синтаксисом (никогда не сохраняйте код, подобный этому, это всего лишь тест)

$sql = "SELECT * FROM signup WHERE token = '" . $_GET['token'] . "'";
var_dump( $sql );
$stmt = $pdo->prepare($sql);
$stmt->execute();
$message = $stmt->fetchAll();

, тогда вы можете протестировать этот выведенный код в инструменте запросов, чтобы убедиться, что он синтаксически правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...