我是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'];
}
答案 0 :(得分: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))
{
}
答案 1 :(得分:0)
我同意真相。
虽然回答你的问题,mysql_real_escape_string()需要一个活跃的连接才能工作。如果你没有打开任何与数据库的连接,它将不起作用,否则它将采用最后打开的连接,除非你明确指定连接。