パスワードを持つようにユーザーを更新する更新クエリを作成しようとしています。更新ステートメントは非常に簡単ですし、今私は約12時間私を困惑されています。PHP SQLの更新が壊れていますか?
Google検索の3.5ページでこれに関するすべてを読んだことがあります。何らかの理由で、私には何の示唆もありません!ここで
は、「オリジナルの」形式でUPDATEクエリです:私は、この更新クエリを実行すると
$sql_update = "UPDATE users_sensitive SET password = '$password_hash', ch_password = '$password_hash' WHERE email_hash = '$email_hash'";
$result_update = mysql_query($sql_update) or die(mysql_error());
は、私がエラーか何か何を取り戻すん。それだけでも更新されません。
はここで同じコードの別の演出です:再び
$sql_update = "UPDATE users_sensitive SET password = '" . $password_hash . "', ch_password = '" . $password_hash. "' WHERE email_hash = '" . $email_hash . "'";
$result_update = mysql_query($sql_update) or die(mysql_error());
、何も起こりません。
私はここの代わりにPHPの変数の中に実際の数字を入れるとき:
は$sql_update = "UPDATE users_sensitive SET password = '700b5b23b511d974fe9eeb17ad350b33', ch_password = '700b5b23b511d974fe9eeb17ad350b33' WHERE email_hash = 'ac24dab060a172d8c0b3679d8ae61cac'";
$result_update = mysql_query($sql_update) or die(mysql_error());
(心配しないでください、それは機密情報ではありません)これは、実際に更新しない...だから
、I私の構文が間違っていると仮定していますか?私はこれらが文字列ではなく文字列であることを知っているので、それらの周りに一重引用符が必要です。私は必要とする2つの変数を持っており、両方が正確に何をすべきかを示しています。私は列の名前の周りにバックティックを使用しようとしましたが、それは何もしませんでしたか?
私はvar_dumpを実行し、 "true"に戻りました。
私は私の$ SQL_UPDATEで印刷を行うと、私が手:
UPDATE users_sensitive SET password = '700b5b23b511d974fe9eeb17ad350b33', ch_password = '700b5b23b511d974fe9eeb17ad350b33' WHERE email_hash = 'ac24dab060a172d8c0b3679d8ae61cac'
ここには空白がありません。 私は$のresult_updateを印刷するとき、それが思い付く:1
ANSWER は、bemaceするジェームズ・アンダーソン、VolkerK、アレックスと他人をありがとう!
問題は、データベースと同じではない空白を作成するコードに奇妙な改行があったことです。
バックトラックした後、私はこのページのコードの冒頭に気づき、URLからハッシュ番号を取得するためにGETを使用しました。変数の作成中に、テスト中に、テスト目的でのみ変数に改行を追加しました。私は(愚かに)そこに改行を残しました。隠しフォームフィールドでその変数を使用するときに、改行が含まれていました。
最初の行から改行した後、すべてが一致し、すべてが良好です。
これを読んでいて、後で投稿する予定がある場合は、コード全体を投稿する価値があります。私が持っていたなら、この問題は早く修正されていたでしょう。
もう一度、迅速な対応とトラブルシューティングに感謝します!
これらの変数を補間する前に 'mysql_real_escape_string()'を使っていますか? – alex
あなたの期待に合うようにwhere条件の変数をチェックしましたか? – fyr
'var_dump($ result_update)'とは何ですか? –