【问题标题】:Why BindValue does NOT yield results when WHERE clause is used?为什么使用 WHERE 子句时 BindValue 不会产生结果?
【发布时间】:2012-06-28 02:28:49
【问题描述】:

我不知道我在这里做错了什么。如果我在此查询中省略 WHERE 子句,服务器将返回数据库中的所有行。所以我知道那部分有效。如果我使用 WHERE CLAUSE 即

WHERE name='$name' AND loc='$loc' -

我得到了结果,但是当我使用 bindValue 或在执行命令中传递活页夹时,我没有收到任何错误和数据

    $stmt = "SELECT * FROM table1 LEFT JOIN table2 ON table1.ID=table2.fkID".
            " WHERE name = :name AND loc = :loc";

    $binder = array(':name' => $name, ':loc' => $loc);

如果函数接受这些参数

public function fetchData($stmt, $binder = array())
    {
        $DB = new PDO(........);
        $STMT =  $DB->prepare($stmt);

        foreach ($binder as $key => $value):
            $k = (is_numeric($key)) ? $key + 1 : $key;
            if (is_int($value)):
                $STMT->bindValue($k, (int) $value, PDO::PARAM_INT);
            else:
                $STMT->bindValue($k, $value, PDO::PARAM_STR);
            endif;
        endforeach;

        try {
            $STMT->execute();
            return $STMT->fetchAll(PDO::FETCH_ASSOC);
        }
        catch (PDOException $e) {
            die($this->error = $e->getMessage());
        }

我在这里做错了什么。对不起,我搜索了所有类似的问题,但我没有答案。

【问题讨论】:

  • 是否应该引用:loc,就像:name 一样?
  • 是的。对不起。这只是一个错字,它在实际代码中被引用。我把它固定在上面。仍然没有结果感谢 Andrewsi 如此快速的响应
  • 这表明查询在某处失败,然后 - 您是否尝试在函数中添加调试语句,以便确保它正在执行您期望的操作,以及数据库是否返回错误代码?
  • 哦,还没有,我想我会尝试...再次感谢!如果您遇到其他建议,请告诉我...
  • 还是没有运气!任何人...我需要帮助,伙计们!这可能与服务器上的设置有关吗?

标签: php pdo prepared-statement bindvalue


【解决方案1】:

我通过重新编写代码解决了这个问题:

foreach ($binder as $key => $value):
            $k = (is_numeric($key)) ? $key + 1 : $key;
            $v = $value;
            if (is_int($v)):
                $STMT->bindValue($k, (int) $v, PDO::PARAM_INT);
            else:
                $STMT->bindValue($k, $v, PDO::PARAM_STR);
            endif;
        endforeach;

注意foreach语句中使用的$v,而不是原来的$value;

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多