2

edit_profile()パラメータなしで関数を実行すると、空の文字列が DB に書き込まれます。たとえば$input['email']、が空の場合、UPDATEこの列を更新したくありません。

私はやろうとしました:

SET email = IF(LENGTH(:email)=0, email, :email),

うまくいきませんでした.PDOで上記と同じことをする方法がわかりません.

function edit_profile($input) {
    //
    $user_id = 1;
    //
    try {
    //

        $conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USERNAME, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('UPDATE users SET
                                    email = :email,
                                    password = :password,
                                    name_surname = :name_surname,
                                    age = :age,
                                    sex = :sex,
                                    education = :education,
                                    avatar = :avatar
                                    WHERE id = :id');


                $stmt->execute(array(
                    ':id'           => $user_id,
                    ':email'        => $input['email'],
                    ':password'     => $input['password'],
                    ':name_surname' => $input['name_surname'],
                    ':age'          => $input['age'],
                    ':sex'          => $input['sex'],
                    ':education'    => $input['education'],
                    ':avatar'       => $input['avatar']
                ));


        echo $stmt->rowCount(); // 1
    //
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
    //
}
edit_profile();
4

2 に答える 2