We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

While loop update using php mysql

agulaid
agulaid asked
on
Medium Priority
426 Views
Last Modified: 2013-12-13
Im trying to update two records stored in a table, im trying to get the while loop to update assigned and agent_id fields - unfortunately it updates all the records in the database with the same $agent_id variable value.

Would love some advice :)
<?php 
 
$i = 1;
 
$facebook = 2;
 
 
$agent_id = 3;
 
 
if ( $facebook >= 1) {
 
while ( $i <= $facebook) {
 
 
// Update current DB
    $sql_update = "UPDATE facebook_user SET assigned = '1', agent_id = '$agent_id'  WHERE agent_id = '75'";
    mysql_query($sql_update) or die(mysql_error());
		
 $i++; 
 
} 
 
}
 
?>

Open in new window

Comment
Watch Question

Commented:
I dont't know what you exactly want to do but you only have the agent_id in the where clause. I think you also need the i or any second parameter you want.

Author

Commented:
UPDATE facebook_user SET assigned = '1', agent_id = '$agent_id'  WHERE agent_id = '75'"
UPDATE facebook_user SET assigned = '1', agent_id = '$agent_id'
  WHERE agent_id = '75'
"

Open in new window

Author

Commented:
the agent_id is before WHERE clause also.

Commented:
??? That is the same query as above ???

What attributes do the two rows have you want to update?
You are always updating all rows that match the where clause, in your case all with agent_id = 75.

Author

Commented:
I would like to limit the updates to the value of $facebook, in this case only update 2 records in the database with an agent_id of 3.
Commented:
Unlock this solution with a free trial preview.
(No credit card required)
Get Preview
"only update 2 records in the database with an agent_id of 3."

Then your where clause needs to reflect that by limiting to records with agent_id = '3'. Not 75...

$sql_update = "UPDATE facebook_user SET assigned = '1', agent_id = '$agent_id'  WHERE agent_id = '3'";



Alan
Wait, why are you assigning $agent_id to 3 before the query is executed? On one hand you are saying you want only records with agent_id = 3 to be updated. Then on the other hand you are hard coding $agent_id to 3 which causes all records to be updated. I'm not sure what you need at this point.


Alan

Author

Commented:
I've managed to resolve it thanks:



$facebook = 2;
 
 
$agent_id = 5;
 
 
if ( $facebook >= 1) {
 
$i = 1;
 
while ( $i <= $facebook) {
 
 
// Update current DB
    $sql_update = "UPDATE facebook_user SET assigned = '1', agent_id = '$agent_id'  WHERE agent_id = '3'";
    $run_query = mysql_query($sql_update) or die(mysql_error());
		
 $i++; 
 
} 
 
}

Open in new window

your query is not fixed. By setting $agent_id = 5 and then saying $agent_id = 3 in the where clause, no records will ever be updated.
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a free trial preview!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.