如何处理此PHP/mysql插入语句中的空值

Kim*_*nce 5 php mysql null

我有时会使用null或空值的数组.在MySql中,它们被设置为不可为空,但它们分配了默认值.那么,为什么MySql会给我一个错误,例如Column user_type can not be null.(我没有以严格的模式运行).

我意识到在准备查询时我可以使用关键字DEFAULT代替一些值,但我真的不想这样做.我希望能够逐字编写我的SQL语句,而不是将它们与foreach循环等组合在一起.例如,我想使用"INSERT INTO users (user_type, first_name, last_name, password) VALUES (:user_type, :first_name, :last_name, :password)";

据我记得,这个工作正常(即用正确的默认值代替),直到我离开使用?查询标记到命名参数...

谢谢...

hgo*_*lov 1

我将创建一个接受值作为参数的函数。它将在关联数组中具有默认值。如果任何参数的值为 null,则会将其替换为默认值。

例如

function setUpQuery($user_type_in, $first_name_in, $last_name_in, $password_in){
       $default_values('user_type' => 'Admin', 'first_name' => 'John', 'last_name' => 'Doe', 'password' => 'XXX');
       $user_type = ($user_type_in == NULL)? $default_values['user_type']:$user_type_in;
       .....
      return "INSERT INTO users (user_type, first_name, last_name, password) VALUES ('$user_type', '$first_name', '$last_name', '$password');"
 }
Run Code Online (Sandbox Code Playgroud)

好点子。怎么样:

INSERT INTO users(user_type, first_name, last_name,password) values 
(ifnull('$user_type',default(user_type)), ifnull('$first_name', default(first_name)),
 ifnull('$last_name',default(last_name)), ifnull('$password', default(password));
Run Code Online (Sandbox Code Playgroud)