如何使用mysqli_real_escape_string处理由json ajax解析的数组? - php

我有一个解析数组的ajax

jQuery的

if (conceptName == "payall"){
var payall = confirm ("You are about paying for some items.");
if (payall == true ){
   var checkedB = new Array();
    $("input.NP:checkbox:checked").each(function(){
       checkedB.push($(this).attr("class"));
   });

   // ajax for sending the selected products array for the payment
    $.ajax({
      type: 'POST',
      url: "ord/payforit.php",
      data: {checkedB:checkedB},
      dataType: 'json',
      cache: false,
      success: function(resultpay) {
                     alert (resultpay);

       } 
     });
  } else {
    alert ("Ok, Do you still wanna add items?");
  }

的PHP

require "dbconnection.php";
$getarr = mysqli_real_escape_string($db,$_POST["checkedB"]);  
echo json_encode ($getarr);

如果我使用$ _POST [“ checkedB”]而不进行清理,则数组解析没有问题,但是使用上面的代码,我将拥有

<br /> 
<b>Warning</b>:  mysqli_real_escape_string() expects parameter 2 to be string, array given in     <b>e/ru/ord/payforit.php</b> on    line <b>21</b><br />
null

我的代码有什么问题,我确定我的数据库连接正常,使用相同目录的图片上传没有错误。

请帮我在这里。

感激。

参考方案

您应该遍历数组并将其应用于值(以及键(如果要处理post和get))

foreach ( $_POST["checkedB"] as $k=>$v ) {
    ${mysqli_real_escape_string( $db, $k )} = mysql_reali_escape_string( $db, $v );
}

echo $someKeyInArray;

还是重新编译一个数组

$array = array();
foreach ( $_POST["checkedB"] as $k=>$v ) {
    $array[mysqli_real_escape_string( $db, $k )] = mysqli_real_escape_string( $db, $v );
}

echo $array['someKeyInArray'];

如果您的数组模型包含多个数组,那么您将需要利用一个函数正确地遍历所有数组,类似这样(未测试)

function mysqli_escape_array( $arr, $db = false ) {
    if ( ! $db ) {
        return false;
    }
    $array = array();
    foreach ( $arr as $k=>$v ) {
        if ( is_array( $v ) ) {
            $array[mysqli_real_escape_string( $db, $k )] = mysqli_escape_array( $v, $db );
        } else {
            $array[mysqli_real_escape_string( $db, $k )] = mysqli_real_escape_string( $db, $v );
        }
    }
    return $arr;
}

$array = mysqli_escape_array( $_POST['checkedB'], $db );

echo json_encode( $array );

PHP问题将implode()与mysql_real_escape_string()组合 - php

如何正确编写同时爆炸和mysql_real_escape_string的MySQL查询的代码?这是我拥有的代码,但是失败了:$sql = "INSERT INTO BEER_LOCATIONS (LOCATION_NAME, LOCATION_STREET, LOCATION_CITY, LOCATION_STATE, LOCATION_ZIPCO…

实时显示在其他在线用户上吗? - php

Facebook如何处理其“实时”数据?如果您正在查看自己的活动供稿,并且用户喜欢某件事,则可以立即看到文字更改,表明该用户喜欢它,或者当收到通知时,您会在页面上看到红色的通知符号,而无需刷新。我知道这段代码可以推送数据而无需刷新:$.post('ajax/test.html', function(data) { $('.res…

消息:mysqli::real_connect():php_network_getaddresses:getaddrinfo失败:未知此类主机 - php

我是PHP MVC CI的新手,我正在错误以下。 消息:mysqli :: real_connect():php_network_getaddresses:getaddrinfo 失败:未知此类主机。下面是我的信息通过。 主机名:http://localhost:1234/Sample/ 用户名:root 密码://此处密码为空 数据库:codeignito…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…