how to update table in foreach loop with where clause

my code:

     foreach($output as $var) {
     $tmp = explode(",", $var);  
     $collec_date = $tmp[2];
     $cust_id = $tmp[4];     
     $cust_name = $tmp[5];       
     $install_no = $tmp[6];
     $amount = $tmp[7]; 

 $sql = "UPDATE ankali_slabpay  SET install_date='$collec_date', install_amt='$amount' WHERE ac_no='$cust_id' AND install_no='$install_no' AND $install_amt='000000' GROUP BY ac_no";  
$result = mysql_query($sql);  
}   

Recommended Answers

Have you tried without the GROUP BY?

Jump to Post

pritaeas is right. The UPDATE command doesn't use GROUP BY clauses. It shouldn't be there. - I'm guessing this UDPATE statement you are using was created based on a SELECT statement, and you aren't 100% sure how that should be done?

One other oddity in this UPDATE statement is the …

Jump to Post

All 5 Replies

What is wrong with this code? What is happening that shouldn't be? What isn't happening that should be? Are you getting any errors? - We need details.

There is one thing in there that should be fixed, if you want any relevant debug information. That is: you seem to be ignoring the result of the UPDATE query. You should be checking if it fails and print/log the error.

$result = mysql_query($sql);
if (!$result) {
    trigger_error("UPDATE query failed: " . mysql_error(), E_USER_ERROR);
}

Whether or not this is printed or logged depends on your server settings. Be sure to look into how that works!

$cust_id = $tmp[4]; will always be at position 4.

What is the exact problem you're having?

this query not updating rows into table

pritaeas is right. The UPDATE command doesn't use GROUP BY clauses. It shouldn't be there. - I'm guessing this UDPATE statement you are using was created based on a SELECT statement, and you aren't 100% sure how that should be done?

One other oddity in this UPDATE statement is the last condition in the WHERE clause: AND $install_amt='000000'. Where is the $install_amt variable comming from? Why are you using a PHP variable as a field name? Is it perhaps not meant to be a PHP variable, and the $ is in there by accident? - Also, why is it supposed to be equal to a string of six zero chars?

If you go back to my first post in this thread, and implement the error handling I suggested, we wouldn't have to be guessing like this. PHP would tell you exactly what is going wrong.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.