php中巧用sprintf組合sql語句

在php中,拼接mysql的語句時,通常情況下,會使用點操作符,如下:

$user_id = 1;
$subject = '哲學';
$sql = "select * from scores where `user_id`=".$user_id." and `subject`='".$subject."'";

以這種方式來拼接sql,會比較繁瑣,尤其是當參數比較多的時候,下面,利用php的sprintf函數,來優化上面的寫法:

$user_id = 1;
$subject = '哲學';
$sql = sprintf("select * from scores where `user_id`=%d and `subject`='%s'",$user_id,$subject);

這樣的代碼,看起來是不是比較簡潔,沒有之前那麼亂了。

其中,%d和%s相當於佔位符,後面的$user_id和$subject會依次替換它們。

從形式上來看,sprintf的方式,有點類似於預處理功能中的參數綁定。

注意:不管是sprintf方式,還是點操作符方式,都無法阻擋sql的注入攻擊。

發佈了68 篇原創文章 · 獲贊 42 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章