[英]Using PHP/PDO to set a NULL as value when UPDATE by array
我正在用 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在创建数组元素时使用 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]);
}
解决方案二在执行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
}
谢谢各位的帮助。
和那些谁“downvote”我的问题,你猜怎么着! 毕竟有解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.