1

我正在尝试创建一个 PDO 函数,但在绑定参数方面遇到了困难。通常我会使用 :field 方法,但在这种情况下,我不知道变量的数量或名称。

function fetch($field,$table,$query,$values){

    global $kdb;

    $sql = "SELECT $field FROM $table $query";

    $stmt = $kdb->prepare($sql);

    $num = 1;
    foreach($values as $value){ $stmt->bindParam($num, $value); $num += 1;}

    $stmt->execute();
    $row = $stmt->fetch();
    return $row;
} 

这将在这样的页面上调用(稍后我将添加过程以避免注入)

print_r(fetch("*","user","WHERE `ID` = ? AND `forename` = ?",array('1','Robin')));

我认为问题在于$stmt->bindParam($num, $value);但我不明白为什么。

4

2 回答 2

1

在撰写本文时,您实际上并没有告诉我们出了什么问题,但可能导致问题的一件事是通过引用bindParam()绑定变量。由于您只想从数组中传递特定值,因此可能更合适。bindValue()

于 2013-09-15T20:56:38.947 回答
1

过度复杂化的罪名。

去掉bundParam函数,在数组内的execute语句中按顺序添加变量。

function fetch($field,$table,$query,$values){

    global $kdb;

    $sql = "$function $field FROM $table $query";

    $stmt = $kdb->prepare($sql);

    $stmt->execute($values);

    $row = $stmt->fetch();
    return $row;
}
于 2013-09-15T16:02:00.630 回答