簡體   English   中英

Php on zend,如何為查詢轉義變量?

[英]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);

參考http//framework.zend.com/manual/en/zend.db.html

使用模型時,您可以使用:

$bugs = new Bugs();
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM