2012-09-07 54 views
1

传递给bindParam的变量是否需要初始化?传递给PDOObject :: bindParam的变量是否需要先初始化?

编辑:实际使用CASE

$user = 0; //IS THIS REQUIRED? 
$stmt = $db->prepare("SELECT * FROM Blah WHERE something=?"); 
$stmt->bindParam(0, $user); 
foreach($array as $user) 
    $stmt->execute(); 
+0

你能告诉我,为什么有人想这样做吗?将一个uninizialized var传递给一些函数绝不是一个好主意 - 也就是说,某人可以通过URL传递一个var来做一些不好的事情 – Philipp

+0

@Philipp:关于你现在删除的非答案中的代码:通常禁用“register_globals”所以用户不能通过GET/POST传递它们来创建任意变量。看到我的答案,可以通过引用单位变量 – ThiefMaster

+0

@ThiefMaster通常 - 但现在很遗憾,我知道一些书教这种技术 – Philipp

回答

1

这取决于你绑定什么样的特性参数的。如果是out参数,则不需要对其进行初始化。如果它是inout参数,您需要初始化它,原因很明显。

在你的情况下,你应该真的初始化它,因为你在WHERE部分使用它,即参数。

从文档:

bool PDOStatement::bindParam(mixed $parameter, mixed &$variable, ...) 

variable - PHP的变量名绑定到SQL语句参数。

+0

请您详细说明输入/输出参数之间的差异吗? – TheRealKingK

相关问题