我是PDO的新手,我编写了以下代码块:
$id = $_GET['id'];
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
foreach($db->query("SELECT id,name FROM names where id = '$id' ") as $row) {
echo "<p>", ($row['name']), "<br>";
}
Run Code Online (Sandbox Code Playgroud)
我的不确定性是:
谢谢
不,这不安全.PDO不会神奇地逃避您的查询.如图所示,您的代码对SQL注入非常开放.
如果您在查询中使用变量,请不要使用->query.不要试图自己逃避它们.你应该使用准备好的陈述.这是安全的方法.
$stmt = $db->prepare('SELECT id,name FROM names where id = ?');
if($stmt->execute(array($id))){
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<p>", ($row['name']), "<br>";
}
}
Run Code Online (Sandbox Code Playgroud)
所以,是的,您需要使用bindParam,或者execute如图所示.
PS mysql_real_escape_string是仅对于(废弃)mysql_扩展.它不适用于PDO.
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |