PHP MYSQL 语句执行不会检索 MYSQL 中特定变量的数据


//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']);

它是有效的。知道吗?

这可能只是个人偏好,但我喜欢对绑定变量更加具体,语法似乎从未让我失望。

$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();

然后,您可以在查询工具中测试输出的代码,以确保其语法正确。

最新更新