2017-06-14 127 views
-1

我有一些奇怪的觀察與mysql_real_escape_stringMYSQL真正轉義字符串觀察

試圖本地主機WAMP服務器上的此代碼時,我得到:

mysql_real_escape_string() expects parameter 1 to be string, array given 

的代碼是這樣的:

$_POST= array (
    'level_id' => '4', 
    'initLevel' => '4', 
    'subject_ids' => 
    array (
    0 => '6', 
), 
    'category' => '11', 
    'areas' => '-1', 
    'dist_code' => '', 
    'district' => '', 
    'gender_preference' => '2', 
    'race' => 
    array (
    0 => '1', 
    1 => '2', 
), 
    'with_photo' => '0', 
    'min_age' => '', 
    'max_age' => '', 
    'notification' => '1', 
    'ban_tutor' => '', 
    'sort_by' => 'regi_date', 
    'fromdate' => '', 
    'day' => '14', 
    'month' => '5', 
    'year' => '2017', 
    'todate' => '2017-06-14', 
    'result_page' => '10', 
    'search' => 'Search Tutors', 
); 

$_POST = array_map('mysql_real_escape_string', $_POST); 
echo '<pre>' . var_export($_GET, true) . '</pre>';exit; 

,但是當我試圖在現場服務器上的相同。 我沒有得到任何錯誤,但結果被剝離這樣的數組值:

array (
    'level_id' => '4', 
    'initLevel' => '4', 
    'subject_ids' => NULL, 
    'category' => '11', 
    'dist_code' => '', 
    'district' => '', 
    'gender_preference' => '2', 
    'race' => NULL, 
    'with_photo' => '0', 
    'min_age' => '', 
    'max_age' => '', 
    'notification' => '1', 
    'ban_tutor' => '', 
    'sort_by' => 'regi_date', 
    'fromdate' => '', 
    'day' => '14', 
    'month' => '5', 
    'year' => '2017', 
    'todate' => '2017-06-14', 
    'result_page' => '10', 
    'search' => 'Search Tutors', 
) 

需要一些方向,如何正確地使用它。

注:我知道mysql_real_escape-string已被棄用,PDO是合適的解決方案。我只是在我的客戶端的服務器上工作。立即改變整個系統是不可行的。

+0

哪個版本的PHP是活的網站上,你用你的本地測試網站是什麼版本? – RiggsFolly

+0

在現場 - 5.6.30和localhost 5.6.25 – Pawan

+0

用於連接的api是什麼,mysql_'? 'mysqli_'? PDO?其他?和這裏的HTML在哪裏? @Pawan –

回答

0

首先你應該使用my_sqli而不是mysql。

現在,

,我們可以做這樣的事情:

$escaped_row = array_map(array($link, 'mysqli_real_escape_string'); 

array_map不知道通過作爲第一個參數的連接。

所以我的意見是使用數組散步。

array_walk($_POST, function(&$string) use ($link) { 
    $string = mysqli_real_escape_string($link, $string); 
}); 

注: $鏈接是你的有效連接。

mysql_real_escape_string and array_map returns blank strings?

+1

你猜猜哪個API用於連接。編輯:這個評論按照原來的帖子https://stackoverflow.com/revisions/44543766/1 –

+0

你也錯過了關於連接的第四個參數。編輯:這個評論按原來的帖子https://stackoverflow.com/revisions/44543766/1 –

+0

@ Fred-ii-現在是okey還是需要改進? –