2013-08-01 19 views
1

目前我執行查詢的方式是這樣的:包裝PHP mysqli爲執行單個查詢準備的語句是否合理?

$this->query(sprintf('insert into mytable values (%d, "%s")', 
    $a, $this->esc($b)));

但我想實現自動轉義,所以我想包裝準備好的語句,這樣我可以做到這一點:

$this->query('insert into mytable values (?, ?)', 
    $a, $b);

它對我的query()方法來包裝執行單個查詢的預處理語句是否合理?

回答

0

要有這樣的功能實際上是唯一的理智的方式

在應用程序代碼中正確使用原始API函數時,在堆棧溢出的這個有福的網站上廣告了很多,這是有史以來最糟糕的做法之一。

是的,即使對單個查詢執行也是有意義的。由於唯一準備好的聲明的目的是正確無條件地格式化您的查詢。

雖然,使用原生爲mysqli創建這樣一個函數準備好的語句是一個複雜的任務。需要大量的經驗和研究來完成它。

說,最後的參數任意數量添加到查詢,你需要的代碼一屏:Bind multiple parameters into mysqli query

而且你將需要兩倍於讓你的成果轉化爲陣!

但是,對於模擬的方法來說,它會容易得多,您可以考慮我嘗試這種功能(實際上是一組函數),稱爲safeMysql。但是呃......看起來好像是I told you if it already.