【问题标题】:PHP/SQL : "false" value received from database with good queryPHP/SQL:从数据库接收到的“假”值具有良好的查询
【发布时间】: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 ??
  • 不要引用占位符。它会将其作为字符串读取,而不是将您的值放入其中。
  • 这里我也质疑IN ( )的用户。如果这些输入是数组或逗号分隔值,则不能从单个占位符绑定它们。
  • 无论你是我的主人,它都有效。我知道一件小事有罪但没有找到..

标签: php mysql sql pdo


【解决方案1】:
  • 如果您针对单个值进行测试,请使用 =,而不是 IN
  • 如果您有一个值列表,则需要进行一些更改。
  • 绑定代码将添加引号,您已经有了引号。删除您的引号。

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多