i am executing SQL statement like this with PDO.
$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);
and $_POSTData_array is like this
Array (
[0] => PIC_Testings
[1] => City
[2] => pic
[3] => 88c85c6670ac164f0a97c85ce5d25211.jpg
[4] => null
[5] => null
)
the problem is i can’t get the null as null in db, its update as blank. any help???
UPDATE !
as per comment by Álvaro González i tried var_dump().
var_dump() is much better. I need to insist: how do you know that you’re getting NULL values upon insertion? – Álvaro González
// 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) ''
}
so actually there was no NULL set in the $_POSTData_array. guess var_dump() way much more batter then print_r() to verifying data.
Advertisement
Answer
Found a Solution.
Solution 1 while creating the array elements use 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]);
}
Solution 2 using array_map to set Null to blank elements after creating the array before executing PDO statement.
$_POSTedData_array = array_map(function($value) {
return $value === "" ? NULL : $value;
}, $_POSTedData_array);
new result of var_dump($_POSTData_array); for both solutions
array(6) {
[0] => string(12) "PIC Testings"
[1] => string(5) "Citys"
[2] => string(3) "pic"
[3] => string(36) "88c85c6670ac164f0a97c85ce5d25211.jpg"
[4] => NULL
[5] => NULL
}
Thanks for all the help everyone.
and to those who ‘downvote‘ my question, guess what! there is a solution after all.