- 締切済み
PHPで更新するデータにNULLが入っている場合
PHP初心者です。 PHPでSQLのUPDATEをしようと思っているのですが、更新するデータがNULLの場合、もとのデータを更新しない、という処理をしたいと思っています。 例えば、 ユーザID、ユーザ名、メールアドレス、と言ったテーブルがあった場合、 ユーザID=null、ユーザ名=null、メールアドレス=xxxxx@gmail.com と更新するとき、 ユーザIDとユーザ名は更新せずに、メールアドレスだけ更新するには、どういった処理をすればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- agunuz
- ベストアンサー率65% (288/438)
SQL文を組み立てるときにチェックする(NULLだったらSQL文に含めない)しかないと思いますが・・・ $param = array(); $value = array(); if (!is_null($userid)) { $param[] = 'userid=?'; value[] = $userid; } if (!is_null($username)) { $param[] = 'username=?'; value[] = $username; } if (!is_null($mail)) { $param[] = 'mail=?'; value[] = $mail; } if (count($param) > 0) { $stmt = $pdo->prepare('update table_name set ' . implode(', ', $param) . ' where (所定の条件)'); $stmt->execute($value); 「所定の条件」が謎です。普通はユーザーIDがプライマリキーになるので、where user_id = ? になるんですが・・・ >更新するデータがNULLの場合 ということなので、is_null でチェックしてますが、本当に NULL ですか?POSTデータが「空文字列」とかいう条件じゃないですよね(空文字列と NULL は別のものなので)。
UPDATE table SET メールアドレス=値 WHERE 条件 ・PHPじゃなくてSQLの質問です。 ・基礎的なデータに関しては普通「NOT NULL」をつけてNULLを許可しない構成にすると思うのですが、「ユーザー名」ならまだしも一意性を保証する「ユーザーID」がNULLになる状況がわかりません。