为了账号安全,请及时绑定邮箱和手机立即绑定

通过数组更新时使用 PHP/PDO 将 NULL 设置为值

通过数组更新时使用 PHP/PDO 将 NULL 设置为值

PHP
慕少森 2022-07-09 09:43:30
我正在使用 PDO 执行这样的 SQL 语句。$SQL_stmt = "UPDATE `home_slides` SET main_title=?,sub_title=?,slide_type=?,photo=?,video_small=?,video_large=? WHERE `id`=1"$DBH_stmt = $PDOcon->prepare($SQL_stmt);$DBH_stmt->execute($_POSTData_array);$_POSTData_array 是这样的Array (     [0] => PIC_Testings     [1] => City     [2] => pic     [3] => 88c85c6670ac164f0a97c85ce5d25211.jpg     [4] => null     [5] => null)问题是我无法在db中将null作为null,它的更新为空白。有什么帮助吗???更新 !根据 Álvaro González 的评论,我尝试了 var_dump()。var_dump() 更好。我需要坚持:你怎么知道你在插入时得到了 NULL 值?——阿尔瓦罗·冈萨雷斯// result of var_dump($_POSTData_array);array(6) {  [0] => string(12) "PIC Testings"  [1] => string(5) "Citys"  [2] => string(3) "pic"  [3] => string(36) "88c85c6670ac164f0a97c85ce5d25211.jpg"  [4] => string(0) ''  [5] => string(0) ''}所以实际上 $_POSTData_array 中没有设置 NULL。猜测 var_dump() 比 print_r() 验证数据要多得多。
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

找到了解决方案。


解决方案 1 在创建数组元素时使用 array_push。


$_POSTData_array= []

if (empty($_POST[$FieldName])) {

   // $_POSTData_array[] .= `null`;   // previous method

   array_push($_POSTedData, null);    // new method

} else {

   array_push($_POSTedData, $_POST[$FieldName]);

}

解决方案 2 在执行 PDO 语句之前创建数组后使用 array_map 将 Null 设置为空白元素。


$_POSTedData_array = array_map(function($value) {

                        return $value === "" ? NULL : $value;

                     }, $_POSTedData_array);

var_dump($_POSTData_array) 的新结果;对于这两种解决方案


array(6) {

  [0] => string(12) "PIC Testings"

  [1] => string(5) "Citys"

  [2] => string(3) "pic"

  [3] => string(36) "88c85c6670ac164f0a97c85ce5d25211.jpg"

  [4] => NULL

  [5] => NULL

}

谢谢各位的帮助。


对于那些“否决”我的问题的人,你猜怎么着!毕竟有解决办法。


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信