2011-06-17 131 views
1

我发现网上的这个例子中对每一个指令后我需要在每个开放准备的语句或可在PDO PHP sqlite3的只有一次准备

# no placeholders - ripe for SQL Injection! 
$STH = $DBH->("INSERT INTO folks (name, addr, city) values ($name, $addr, $city)"); 

# unnamed placeholders 
$STH = $DBH->("INSERT INTO folks (name, addr, city) values (?, ?, ?); 

# named placeholders 
$STH = $DBH->("INSERT INTO folks (name, addr, city) value (:name, :addr, :city)"); 

我关闭连接插入SQLite中usong PHP PDO(另一应用程序只读取和我的只有插入)。我是否需要在每个公开场合准备好声明或只准备一次?

回答

-1
$userprep = $userdbc->prepare(" 
    INSERT INTO Users (userID, userPass, userName, userEmail) 
    VALUES (:userID, :userPass, :userName, :userEmail) 
"); 
$userprep->execute($newUser); 

继承人的我的代码的一个例子,以使用占位符插入一个新的用户..

$newUser是一个关联数组。

一旦你已经准备好为你愿意,你可以执行该语句多次,例如,如果我有用户的嵌套数组进入我可以运行此声明:

for($i = 0; $i < count($newUser); $i++){ 
    $userprep->execute($newUser[$i]); 
} 

(嵌套阵列当然必须使用联想键)

希望这有一些帮助..

+0

你还没有读过这个问题,是吗? – 2011-10-06 11:14:36

+0

我可能没有完全回答这个问题,但它确实举例说明了一个准备好的陈述可以被多次使用 - 表明Danka确实可以很好地利用准备好的陈述,而不必关闭/重新打开/重复。这是一个被接受的答案 - 所以它至少有一些帮助:) – 2011-10-06 22:45:00

+0

它不回答“我可以在不同的连接上使用相同的准备语句”,但... – 2011-10-12 17:30:29