Php 如何使用PDO避免mysql注入
如何避免mysql注入?这是我现在拥有的PHP文件Php 如何使用PDO避免mysql注入,php,mysql,pdo,code-injection,Php,Mysql,Pdo,Code Injection,如何避免mysql注入?这是我现在拥有的PHP文件 <?php include 'config.php'; $Name = $_GET['Name'] ; $sql = "Select * from tables where names =\"$Name\""; try { $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $dbh->query('SET CHARA
<?php
include 'config.php';
$Name = $_GET['Name'] ;
$sql = "Select * from tables where names =\"$Name\"";
try {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->query('SET CHARACTER SET utf8');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query($sql);
$names = $stmt->fetchAll(PDO::FETCH_OBJ);
$dbh = null;
echo '{"key":'. json_encode($names) .'}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
?>
当我放置$stmt=$dbh->query($sql)时$stmt->execute(数组(':name'=>$name))代码>到代码,它不工作。那我该怎么做呢?阅读
这里有一个例子
$stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name");
$stmt->execute(array(':name' => $name));
这一点非常重要,而且经常被误解:仅仅使用PDO并不能保护您免受SQL注入的影响。只有像上面这样的参数化查询才可以。@skwee说只有PDO准备的语句不能阻止注入。看看这个。可能是重复的