0

我是 PDO 的新手,我的问题是,是否应该在将 $input 添加到查询之前对其进行转义?我应该如何最好地实施它?

$input= $_POST['time']; //2012-07-21 17:00:00

foreach($db->query('SELECT * FROM events WHERE TIMESTAMPDIFF( HOUR , TIME, $input ) < 2') as $row) {
    echo $row['name'];
}
4

2 回答 2

1

在您的情况下,尽管您应该使用准备好的语句,但您不会使用 PDO::quote(),这是您切换到 mysqli 或 PDO 的主要原因之一。

$db = new PDO('mysql:host=localhost;dbname=db', 'user','pass');

$query = $db->prepare('SELECT * FROM events WHERE TIMESTAMPDIFF( HOUR , TIME, :input ) < 2');
$query->bindValue(":input", $input, PDO::PARAM_INT);
$query->execute();
while($row = $query->fetch(PDO::FETCH_ASSOC))
{

}
于 2012-07-20T14:17:51.397 回答
0

我同意真理。

虽然要回答您的问题 mysql_real_escape_string() 需要一个活动连接才能工作。如果您没有打开任何与数据库的连接,它将无法工作,否则它将采用最后打开的连接,除非您明确指定连接。

于 2012-07-20T14:17:35.810 回答