[英]Php on zend, how to escape a variable for a query?
我在Zend Framework中做了一些查詢,我需要確保在下一種格式中不能進行SQL注入。 我可以使用mysql_escape(已棄用)並且不會完成所有工作。 如果我嘗試使用real_mysql_escape它將無法獲取數據庫的連接,我無法找到zend_filter將如何解決問題。
我正在做的查詢(simplied)有下一個sintaxes:
$db = Zend_Registry::get('db');
$select = "SELECT COUNT(*) AS num
FROM message m
WHERE m.message LIKE '".$username." %'";
$row = $db->fetchRow($select);
使用此框架阻止SQL INJECTION的最佳方法是什么?
簡單:
$db->quote($username);
所以:
$username = $db->quote($username . '%');
$select = 'SELECT COUNT(*) AS num
FROM message m
WHERE m.message LIKE ' . $username;
$row = $db->fetchRow($select);
$sql = 'SELECT * FROM messages WHERE username LIKE ?';
$row = $db->fetchRow($sql, $username);
使用模型時,您可以使用:
$bugs = new Bugs();
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.