2017-01-23 2 views
-2

Ich schreibe einen Code für MySQL, um die erste Zeile mit Status "inaktiv" zu holen und sie "aktiv" zu machen, aber immer wenn ich versuchte, die Spalte zu aktualisieren und es zu machen " aktiv "Meine Abfrage aktualisiert mehrere Zeilen statt der einzelnen Zeile.SQL Updates: Updates Mehrere Zeilen anstelle von einzelnen Zeilen

date_default_timezone_set('Asia/Kolkata'); 
$d = time(); 
$date = date("Y-m-d", $d); 

$customer_id="1470831854"; 

$member_details="SELECT * FROM login_update WHERE customer_id ='$customer_id' AND status='inactive' ORDER BY id ASC LIMIT 1 "; 
$member = mysql_query($member_details); 
while($list = mysql_fetch_array($member)){ 
    $status = $list['status']; 
    $id = (int)$list['id']; 

} 
$date_update = "UPDATE login_update SET status='active' WHERE id = '$id'"; 
$enter_date = mysql_query($date_update); 
+3

zwei Möglichkeiten in den Sinn kommen: a) "ID" ist nicht einzigartig b) Sie führen Ihren Code mehrmals aus. auch: benutze keine 'mysql'-Funktionen, sie sind veraltet und in PHP7 ** entfernt **. Verwenden Sie stattdessen "mysqli" oder "PDO" und verwenden Sie parametrisierte Anweisungen. auch: warum benutzt du eine 'while'-schleife, wenn du * weißt * du wirst nur ein ergebnis haben? –

Antwort

0

denke ich Ihren Code ändern, wie folgt sein sollte

while($list = mysql_fetch_array($member)){ 
    $status = $list['status']; 
    $customerId = (int)$list['customer_id']; 

} 
$date_update = "UPDATE login_update SET status='active' WHERE id = '$customerId'"; 
$enter_date = mysql_query($date_update); 

becasue wenn Sie $ Liste [ ‚id‘] bekommen es immer nur ein eindeutiger Wert aus der Datenbank dann eine nur aktualisieren zurückkehren wird Rekord . Ich nahm an, dass id dein Primärschlüssel ist.