【问题标题】:PHP PDO fetch returns falsePHP PDO 提取返回 false
【发布时间】:2014-09-07 13:05:13
【问题描述】:

我一直在思考那个“错误”,但不能说为什么它返回错误。 我已经为此做了一个 SELECT 但那是在另一个文件中..

 $result = $db->dbh->prepare("SELECT thumbs FROM skill WHERE id=? LIMIT 1");
 $result->bindParam(1, $id);
    // $id == 4 here
 $result->execute();
 $row = $result->fetch(PDO::FETCH_ASSOC);
    // $row == false > why ?
 $thumbs = $row['thumbs'];

当我尝试在 PhpMyAdmin 上运行它时,它运行良好。

我在 AJAX 调用上执行此代码,并为 $db 连接使用相同的 config.php 文件。

另一个问题:

    $sql_in = $db->dbh->prepare("INSERT INTO `voted_ip` (id, ip) VALUES (:id, :ip)");
    // $id == 4
    $sql_in->bindParam(":id", $id);
    $sql_in->bindParam(":ip", $ip, PDO::PARAM_STR);
    $sql_in->execute();

它插入“0”和我的 ip。为什么是 0?

请帮忙

【问题讨论】:

  • 检查$result->errorInfo() 是否有任何错误。
  • 它返回 ["00000",null,null]。这是什么意思?
  • 您的查询运行没有错误。见php.net/manual/en/pdostatement.errorinfo.php。如果fetch() 返回false,则结果集中没有(更多)行。您确定有返回带有该参数的行吗?
  • ipaddress !== person 你最好使用cookies
  • var_dump($id)。如果它是一个字符串值(例如,它来自 $_GET 或 $_POST),并且以非数字字符开头,MySQL 会将其强制转换为整数零。换句话说,$id 真的包含完全您期望的值吗?

标签: php mysql pdo


【解决方案1】:

这是因为 $id 是一个 STRING 被 MySQL 转换为 0。

$id = intval($id);

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 2014-03-03
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2016-08-31
    • 2017-12-07
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多