在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的注入攻擊。