PHP/SQL:从数据库接收到的“假”值具有良好的查询
Posted
技术标签:
【中文标题】PHP/SQL:从数据库接收到的“假”值具有良好的查询【英文标题】:PHP/SQL : "false" value received from database with good query 【发布时间】:2018-06-27 13:25:22 【问题描述】:我有一个 php 脚本,它使用 PDO 询问我的数据库以验证发送的某些值是否存在。如果它们存在,则数据库以该行值的 id 响应。
我在 mysql 上测试了查询,它可以工作,但收到的值为false
。
此代码仅供个人使用。
有代码:
<?php
include("../template/pdo.php");
$query = $pdo->prepare("SELECT id_utilisateur FROM utilisateur
WHERE `mail` IN ( ':mail' )
AND `mdp` IN ( ':mdp' )");
$query->bindParam(':mail', $_GET['identifiant'], PDO::PARAM_STR);
$query->bindParam(':mdp', $_GET['mdp'], PDO::PARAM_STR);
$success = $query->execute();
if($success)
$result = $query->fetch();
var_dump($result); //bool(false) actually
if($result == false)
$message = "Try again.";
else
$message = "Congratulation !";
我测试了我所知道的一切:
$_GET
是从我的数据库表打印/粘贴到我的 url,我已经打印了他
用我的$_GET
值打印/粘贴到phpMyAdmin
来自PDOStatement::debugDumpParams()
的查询
pdo.php
工作并用于其他脚本
我的日志文件中没有日志。
有人可以帮助我吗? 谢谢!
【问题讨论】:
':mail' 命令分隔 id ?? 不要引用占位符。它会将其作为字符串读取,而不是将您的值放入其中。 When to use single quotes, double quotes, and back ticks in MySQL的可能重复 这里我也质疑IN ( )
的用户。如果这些输入是数组或逗号分隔值,则不能从单个占位符绑定它们。
无论你是我的主人,它都有效。我知道一件小事有罪但没有找到..
【参考方案1】:
如果您针对单个值进行测试,请使用 =
,而不是 IN
。
如果您有一个值列表,则需要进行一些更改。
绑定代码将添加引号,您已经有了引号。删除您的引号。
【讨论】:
以上是关于PHP/SQL:从数据库接收到的“假”值具有良好的查询的主要内容,如果未能解决你的问题,请参考以下文章
序列化接收到的具有“LocalDateTime”数据类型的 JSON 对象 [重复]
输入形状的预期轴 -1 的值为 20,但接收到的输入形状为(无,29)
从 UDP 接收到的消息播放音频,点击声音(Naudio API)