使用安全PDO从db打印值

时间:2018-05-17 21:51:39

标签: php mysql pdo

我是PHP的新手。这就是我一直以来所做的。我有一个包含各种项目的页面。每个项目都有一个链接,其中包含每个项目的描述,例如:www.example.com/project.php?id = 1

在页面项目中,取变量并在db中搜索(SELECT * FROM table WHERE id = $ id

然后我举了例如echo $row['name']

好吧,一位好友告诉我,我必须进行PDO查询,因为我所做的并不安全。我想知道是否有人可以帮我处理代码。这就是我到目前为止所做的,但我无法继续前进。

非常感谢提前!

$db = new PDO('mysql:host='.$dateBaseHost.';dbname='.$dateBaseName, 
$dateBaseUsername, $dateBasePassword);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//simple query and binding with results
$query = $db->prepare(" SELECT * FROM grafica WHERE ID = :id ");

2 个答案:

答案 0 :(得分:5)

您的上述代码看起来不错。现在,您只需要使用 bindParam() 绑定到:id参数,然后使用 execute() 执行查询。您可以使用 fetchAll() 检索结果。

// Simple query and binding with results
$value = 1;
$query = $db->prepare("SELECT * FROM grafica WHERE ID = :id");
$query->bindParam(':id', $value);
$query->execute();
$result = $query->fetchAll();

// Output all the results
print_r($result);

// Loop over the results to output a specific result
foreach ($result as $row) {
    echo $row['id'];
}

答案 1 :(得分:0)

所以我必须通过网址发送id,例如www.mysite.com?id=1,代码应该是这样的吗?

$id = $_GET['id'];
$db = new PDO('mysql:host='.$dateBaseHost.';dbname='.$dateBaseName, 
$dateBaseUsername, $dateBasePassword);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Simple query and binding with results
$query = $db->prepare("SELECT * FROM grafica WHERE ID = :id");
$query->bindParam(':id', $id);
$query->execute();
$result = $query->fetchAll();

// Output all the results
print_r($result);

// Loop over the results to output a specific result
foreach ($result as $row) {
echo $row['id'];
}