代码之家  ›  专栏  ›  技术社区  ›  Enrique Moreno Tent

根据代码的不同,在数组中循环返回不同的SQL结果

  •  2
  • Enrique Moreno Tent  · 技术社区  · 12 年前

    我正在将(键,值)转换为PDO选择搜索,但我发现了一个奇怪的行为。

    这是有效的:

    $statement = $this->handler->prepare("SELECT * FROM $table WHERE pid=:pid AND section=:section");
    foreach ($data as $key => $value)
        $statement->bindParam(":$key", $data[$key]);
    
    $statement->execute();
    debug($statement->fetchAll(PDO::FETCH_ASSOC));
    

    但当我将循环内的函数更改为这个时 不是 工作

    foreach ($data as $key => $value)
        $statement->bindParam(":$key", $value);
    

    尽管 $value == $data[$key] 是的,他们的第二个代码没有给我正确的结果。为什么?

    1 回复  |  直到 12 年前
        1
  •  4
  •   Mike    12 年前

    它不起作用的原因是您将参数绑定到 $value ,不断变化。

    如果您这样做:

    $value = 5;
    $statement->bindParam(":$key", $value);
    $value = 10;
    

    然后 10 将在查询中发送。

    相反,您要做的是绑定VALUE而不是参数:

    foreach ($data as $key => $value)
        $statement->bindValue(":$key", $value);
    
    推荐文章