PHP kullanarak SQL veritabanını güncelleyerek

4 Cevap php

Ben sitemde bir şifre alma sistemi yapmak için çalışıyorum ve benim veritabanında parola sıfırlama alanını güncellerken sorun yaşıyorum. Ben her şeyi denedim, ama hiçbir şey iş gibi görünüyor.

Bu şimdiye kadar benim kodudur:

$passwordreset = md5(mt_rand()) . md5(mt_rand()) . md5(mt_rand());

$con = mysql_connect("localhost","XXX","XXX");
if (!$con) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);

mysql_query("UPDATE members SET passwordreset = $passwordreset WHERE id = $id");

Ben veri eklemek çalıştığınızda hata alıyorum:

Error: Query was empty

Any help would be appreciated, Thanks.

4 Cevap

Dizeleri birkaç md5 bir birleştirme, ona sahip saklamak için - bu tek sorun, ama ben senin Parolanın alan veritabanında bir dize olduğunu tahmin ediyorum emin değil.

Yani, SQL sorgusunda, bu alanda koymak değerin etrafında tırnak olmalıdır:

mysql_query("UPDATE members SET passwordreset = '$passwordreset' WHERE id = $id");


And, in a general case, you should escape your string values with mysql_real_escape_string :

mysql_query("UPDATE members SET passwordreset = '" 
    . mysql_real_escape_string($passwordreset) 
    . "' WHERE id = $id");

Bir md5 hiçbir alıntı olduğu gibi, burada bir şey değişmez ... Ama her zaman bunu yapmak için iyi bir uygulamadır, gerekli nerede bir durumda kendinizi bulmak asla ve bunu yapmadım.

Bunun için boş bir sorgu hata alırsanız ben, emin değilim, ama değerler etrafında keneler gerekir:

mysql_query("UPDATE members SET passwordreset = '$passwordreset' WHERE id = '$id'");

Ben sütunların adları etrafında backticks eksik sanırım, deneyin:

mysql_query("UPDATE members SET `passwordreset` = '$passwordreset' WHERE `id` = '$id'");

Sonra iki satır sonları $passwordreset kasıtlı? Onları kaldırarak deneyebilir miyim?