0

ユーザーがフォームを送信して日付タイプを更新した後、ユーザーから生年月日を取得しようとしていますが、日付タイプを更新できません。私が間違っていることを教えてもらえますか?

if($_POST){
    $dob = date('Y-m-d',strtotime($_POST['year']."-". $_POST['month']."-".$_POST['day'])); 

    $retur = $userObj->updateProfile($dob);
}

 public function updateProfile($dob){
$db = db_mysql::getInstance();
$qr = $db->query("UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'") or die(mysql_error()); 

        return $udata;
}
4

3 に答える 3

1

これを試して:

$qr = $db->query("UPDATE ".USERS." SET dob = '$dob' WHERE id = '".$udata."'") or die(mysql_error());

ただし、バインドされたパラメーターの使用を検討する必要があります。これにより、この種の処理が回避され、コードの安全性が大幅に向上します。

追加するために編集:

パラメータのバインドに関するマニュアルページに は、非常に役立つ例がいくつかあります。

于 2012-09-05T21:06:40.310 に答える
1

日付を引用符で囲みます。ステートメントは次のようになります。

UPDATE USERS SET dob = 01-02-2012 WHERE id = 'x'

この場合の日付は数字として表示されます(-2013、私は思います)。;)

さらに良い方法:プリペアドステートメントを使用し(PDOを検索)、日付パラメーターで日付を渡します。

于 2012-09-05T21:07:12.523 に答える
1

$ udataとは何ですか?どこから入手していますか?

それがクラスプロパティである場合は、静的クラスを呼び出しているように見えるため、$this->udataまたは$db::udataこの場合は呼び出す必要があります。どちらでもない場合は、関数に渡す必要があります。

また、なぜあなたのクエリは"UPDATE ".USERS." SET dob = $dob WHERE id = '".$udata."'"、USERSで何が起こっているのですか?確かにそうあるべきであり"UPDATE USERS SET dob = '$dob' WHERE id = '".$udata."'"、前述のように$dobの周りに''を追加します。

于 2012-09-05T21:08:47.100 に答える