PHP警告:mysqli::real_escape_string()要求参数1为字符串,数组给定

PHP警告:mysqli::real_escape_string()要求参数1为字符串,数组给定,php,mysqli,Php,Mysqli,我从PHP得到一个警告: PHP警告:mysqli::real_escape_string要求参数1为字符串,数组在..中给出 发出警告的代码是: $saveData = array_map(array($connection, 'real_escape_string'), $saveData); $saveData是从$\u中解码的JSON-典型的数据集是: array(22) { ["quoteID"]=> string(7) "GLY0YQ5" ["Invent

我从PHP得到一个警告:

PHP警告:mysqli::real_escape_string要求参数1为字符串,数组在..中给出

发出警告的代码是:

$saveData = array_map(array($connection, 'real_escape_string'), $saveData);
$saveData是从$\u中解码的JSON-典型的数据集是:

array(22) {
  ["quoteID"]=>
  string(7) "GLY0YQ5"
  ["Inventory"]=>
  array(0) {
  }
  ["pickupLocation"]=>
  string(15) "EPPING NSW 2121"
  ["dropOffLocation"]=>
  string(17) "RICHMOND VIC 3121"
  ["pickupSuburb"]=>
  string(6) "EPPING"
  ["pickupPostcode"]=>
  string(4) "2121"
  ["pickupState"]=>
  string(3) "NSW"
  ["dropoffSuburb"]=>
  string(8) "RICHMOND"
  ["dropoffPostcode"]=>
  string(4) "3121"
  ["dropoffState"]=>
  string(3) "VIC"
  ["pickupLatitude"]=>
  string(10) "-33.772549"
  ["pickupLongitude"]=>
  string(10) "151.082365"
  ["dropoffLatitude"]=>
  string(10) "-37.818587"
  ["dropoffLongitude"]=>
  string(10) "144.999181"
  ["pickupDistance"]=>
  string(1) "0"
  ["pickupAccess"]=>
  string(1) "0"
  ["dropoffDistance"]=>
  string(1) "0"
  ["dropoffAccess"]=>
  string(1) "0"
  ["regionalLoading"]=>
  string(1) "0"
  ["totalVolume"]=>
  string(2) "39"
  ["totalDistance"]=>
  string(3) "897"
  ["totalPrice"]=>
  string(4) "3120"
}
我的理解是,问题在于mysqli希望第一个参数是$connection变量,实际上是这样,它与常规mysqli格式不同,因为array_map需要的格式

如果期望的结果是在一次射击中真实逃逸整个阵列,并且错误只是一个警告,并且实际上正在工作,那么有没有更好的方法来做到这一点,甚至有必要进行调整


您的问题是,您的数据包含一个数组,mysqli::real\u escape\u字符串无法对该数组进行转义,该数组正在触发警告。在尝试转义之前,请确保数组中的所有值都是标量值,而不是像数组那样的复杂值。

什么是$saveData?它包含哪些值?@deceze-我现在在问题中添加了$saveData的典型细分。顺便问一下,为什么您首先仍然使用real_escape_字符串?使用预先准备好的语句!这是一个公平的陈述,我正在学习我们所说的准备好的陈述,但我仍然想看看如果可能的话,是否有解决这个问题的方法。从问题中去除实际问题会降低它对未来读者的有用性。回滚到一致的版本…我不认为这是问题所在,因为我在运行数组之前从数组中取消设置了该部分,所以它肯定不是问题所在。我现在已经从上面删除了。。很抱歉没有立即看到。问题是库存是一个数组。空不空都没关系。您正在尝试执行$connection->real\u escape\u stringarray…,但该操作不起作用。如果是这种情况,我是否应该得到一个致命错误,并且脚本应该失败?一切似乎都正常运转,只是有一个警告。我应该补充说,我很感谢你在这方面的帮助!PHP喜欢对致命的崩溃发出微弱的警告。你可以一整天都在争论它的用处…--;;;这是否意味着我的帐户现在可以被删除?这是一个真正的错误,但它似乎只会继续获得否决票,直到它消失。我在发帖前确实四处看看了。。只是有时候会让你在一个可怕的地方发问。
["Inventory"]=>
  array(0) {
  }