[英]mysqli_real_escape_string with array in php?
我的代碼是這樣的
public function addQuestions($data){
$ans = array();
$ans[1] = $data['ans1'];
$ans[2] = $data['ans2'];
$ans[3] = $data['ans3'];
$ans[4] = $data['ans4'];
$ans= mysqli_real_escape_string($this->db->link, $data[$ans]);
}
這是在這個sql函數中使用數組的正確方法嗎?
由於您希望對數組$ ans的每個元素執行某些操作,因此最適合使用array_map() ,如下所示:
public function addQuestions($data){
$ans = array();
$ans[1] = $data['ans1'];
$ans[2] = $data['ans2'];
$ans[3] = $data['ans3'];
$ans[4] = $data['ans4'];
$escaped_ans = array_map(function( $e ) {
return mysqli_real_escape_string( $this->db->link, $e);
}, $ans );
由於你有一個數組,並且你想在數組的每個元素上使用mysqli_real_escape_string
,你可以使用array_walk()
:
function myescape($val)
{
return mysqli_real_escape_string($val);
}
... 然后
array_walk($ans, 'myescape');
如果您使用MYSQL PDO,則不需要添加“mysqli_real_escape_string”,因為綁定后所有變量都是安全的(來自SQL注入)
我沒有足夠的聲譽評論米蘭的帖子,但要注意array_walk,它不會改變你原來的陣列。 對於實際影響陣列的米蘭代碼,函數必須是
function myescape(&$val) //Note the '&' which calls $val by reference.
{
$val = mysqli_real_escape_string($val);
}
array_walk($ans, 'myescape');
要回答你的問題:
public function addQuestions($data){
$ans = array('',$data['ans1'],$data['ans2'],$data['ans3'],$data['ans4']);
//I would recommend using an object/associative array in this case though, just the way $data is already
$ans_escaped = array_map(function($val) {
return mysqli_real_escape_string($this->db->link, $val);
}, $ans);
//do whatever you need to do with escaped array
}
不過,我的建議是真正研究准備好的陳述。 它可能看起來像你不想打擾的額外工作 - 起初 - 但是一旦你學會它,你將永遠不想以任何其他方式去做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.