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)

Swift:如何将从委托接收到的值传递给函数的完成块?

从 UDP 接收到的消息播放音频,点击声音(Naudio API)

如何将从 json 接收到的 ko.observable 字符串解析为整数(数字)值

从串行数据数组中解码和重新格式化值