2017-06-14 136 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还是需要改进? –