猿问

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

我正在使用 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() 验证数据要多得多。


慕少森
浏览 152回答 1
1回答

慕的地6264312

找到了解决方案。解决方案 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}谢谢各位的帮助。对于那些“否决”我的问题的人,你猜怎么着!毕竟有解决办法。
随时随地看视频慕课网APP
我要回答