5

nullまたは空の値の配列があることがあります。MySqlでは、null許容ではないように設定されていますが、デフォルト値が割り当てられています。それでは、なぜMySqlはエラーを表示しますかColumn user_type can not be null?(私は厳密モードで実行していません)。

クエリを準備するときに、いくつかの値の代わりにキーワードDEFAULTを使用できることに気付きましたが、実際にはそうしたくありません。foreachループなどでSQLステートメントをまとめるのではなく、逐語的に記述できるようにしたいと思います。たとえば、次のように使用します。"INSERT INTO users (user_type, first_name, last_name, password) VALUES (:user_type, :first_name, :last_name, :password)";

私が思い出す限り、これは、使用をやめるまでは正常に機能していました(つまり、正しいデフォルトに置き換えられました)。名前付きパラメータへのクエリマーカー...

ありがとう...

4

1 に答える 1

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');"
 }

いい視点ね。次はどうですか:

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));
于 2012-06-04T06:50:04.923 に答える