我正在尝试创建一个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);
,但我不明白为什么。
答案 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()
可能更合适。