PDO选择带有问号和未知数量的变量

时间:2013-09-15 15:37:55

标签: php mysql pdo sqlbindparameter

我正在尝试创建一个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);,但我不明白为什么。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

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