mysql_fetch_array() expects parameter 1 to be resource

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
tem5olufe2007
Forum Newbie
Posts: 5
Joined: Sun Aug 10, 2014 2:46 pm

mysql_fetch_array() expects parameter 1 to be resource

Post by tem5olufe2007 »

please i need help on this Multi-level marketing (MLM) code. I am a newbie in php script. I am building a MLM system where referral's account will be credited with #1,000 base on introduction of new member. This process continue to the 7th Generation.

This is my code

Code: Select all



$add = 1;
$nbal = 1000;

if(isset($_POST['submit'])){
$bkcid=$_POST['publisher'];
				
$select = mysql_query("select * from users WHERE id = $bkcid");
while($row = mysql_fetch_array($select)){ 
				$user_id1 = $row['id'];
				$pbal1 = $row['balance'];
				$lev1 = $row['level'];
				$reff1 = $row['referral'];
 
						$update2 = mysql_query("UPDATE users SET follower = follower + 1,  balance= balance + 1000 WHERE id=$reff1") or die (mysql_error());
				}
				$seselect = mysql_query("select * from users WHERE id = $reff1");
while($row1 = mysql_fetch_array($seselect)){ 
				$user_id2 = $row1['id'];
				$pbal2 = $row1['balance'];
				$lev2 = $row1['level'];
				$reff2 = $row1['referral'];
				
				
					$update3 = mysql_query("UPDATE users SET follower = follower + 1,  balance= balance + 1000 WHERE id=$reff2") or die (mysql_error());
				}
				
				$tselect = mysql_query("select * from users WHERE id = $reff2");
while($row2 = mysql_fetch_array($tselect)){ 
				$user_id3 = $row2['id'];
				$pbal3 = $row2['balance'];
				$lev3 = $row2['level'];
				$reff3 = $row2['referral'];
				
				
					$update4 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff3") or die (mysql_error());
				}
				$fselect = mysql_query("select * from users WHERE id = $reff3");
while($row3 = mysql_fetch_array($fselect)){ 
				$user_id4 = $row3['id'];
				$pbal4 = $row3['balance'];
				$lev4 = $row3['level'];
				$reff4 = $row3['referral'];
				
				
					$update5 = mysql_query("UPDATE users SET follower = follower + 1,  balance= balance + 1000 WHERE id=$reff4") or die (mysql_error());
					}
				$fiselect = mysql_query("select * from users WHERE id = $reff4");
while($row4 = mysql_fetch_array($fiselect)){ 
				$user_id5 = $row4['id'];
				$pbal5 = $row4['balance'];
				$lev5 = $row4['level'];
				$reff5 = $row4['referral'];
				
				
					$update6 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff5") or die (mysql_error());
					}
					$siselect = mysql_query("select * from users WHERE id = $reff5");
while($row5 = mysql_fetch_array($siselect)){ 
				$user_id6 = $row4['id'];
				$pbal6 = $row5['balance'];
				$lev6 = $row5['level'];
				$reff6 = $row5['referral'];
				
				
					$update7 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff6") or die (mysql_error());
					}
					$sevselect = mysql_query("select * from users WHERE id = $reff6");
while($row6 = mysql_fetch_array($sevselect)){ 
				$user_id7 = $row6['id'];
				$pbal7 = $row6['balance'];
				$lev7 = $row6['level'];
				$reff7 = $row6['referral'];
				
				
					$update8 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff7") or die (mysql_error());
					
				if ($update8){$mesg='<font color="white"> <strong> Member "$status" is Updated Successfully</strong> </font>'; }
		}
}
	 
But i keep getting this error message " mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/realcas1/public_html/admin/update_member.php on line 55".

please urgent help will be appreciated
User avatar
Celauran
Moderator
Posts: 6427
Joined: Tue Nov 09, 2010 2:39 pm
Location: Montreal, Canada

Re: mysql_fetch_array() expects parameter 1 to be resource

Post by Celauran »

mysql_query returns false when there's an error in the query itself. Line 55 in the code above is a blank line, so I don't even know which query it's complaining about.
tem5olufe2007
Forum Newbie
Posts: 5
Joined: Sun Aug 10, 2014 2:46 pm

Re: mysql_fetch_array() expects parameter 1 to be resource

Post by tem5olufe2007 »

Thanks for your prompt response, I really appreciate it. Line 55 starts from here:

Code: Select all

while($row1 = mysql_fetch_array($seselect)){
                                $user_id2 = $row1['id'];
                                $pbal2 = $row1['balance'];
                                $lev2 = $row1['level'];
                                $reff2 = $row1['referral'];
                               
                               
                                        $update3 = mysql_query("UPDATE users SET follower = follower + 1,  balance= balance + 1000 WHERE id=$reff2") or die (mysql_error());
                                }
                               
                                $tselect = mysql_query("select * from users WHERE id = $reff2");
while($row2 = mysql_fetch_array($tselect)){
                                $user_id3 = $row2['id'];
                                $pbal3 = $row2['balance'];
                                $lev3 = $row2['level'];
                                $reff3 = $row2['referral'];
                               
                               
                                        $update4 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff3") or die (mysql_error());
                                }
                                $fselect = mysql_query("select * from users WHERE id = $reff3");
while($row3 = mysql_fetch_array($fselect)){
                                $user_id4 = $row3['id'];
                                $pbal4 = $row3['balance'];
                                $lev4 = $row3['level'];
                                $reff4 = $row3['referral'];
                               
                               
                                        $update5 = mysql_query("UPDATE users SET follower = follower + 1,  balance= balance + 1000 WHERE id=$reff4") or die (mysql_error());
                                        }
                                $fiselect = mysql_query("select * from users WHERE id = $reff4");
while($row4 = mysql_fetch_array($fiselect)){
                                $user_id5 = $row4['id'];
                                $pbal5 = $row4['balance'];
                                $lev5 = $row4['level'];
                                $reff5 = $row4['referral'];
                               
                               
                                        $update6 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff5") or die (mysql_error());
                                        }
                                        $siselect = mysql_query("select * from users WHERE id = $reff5");
while($row5 = mysql_fetch_array($siselect)){
                                $user_id6 = $row4['id'];
                                $pbal6 = $row5['balance'];
                                $lev6 = $row5['level'];
                                $reff6 = $row5['referral'];
                               
                               
                                        $update7 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff6") or die (mysql_error());
                                        }
                                        $sevselect = mysql_query("select * from users WHERE id = $reff6");
while($row6 = mysql_fetch_array($sevselect)){
                                $user_id7 = $row6['id'];
                                $pbal7 = $row6['balance'];
                                $lev7 = $row6['level'];
                                $reff7 = $row6['referral'];
                               
                               
                                        $update8 = mysql_query("UPDATE users SET follower = follower + 1 ,  balance= balance + 1000 WHERE id=$reff7") or die (mysql_error());
                                       
                                if ($update8){$mesg='<font color="white"> <strong> Member "$status" is Updated Successfully</strong> </font>'; }
                }
}
User avatar
twinedev
Forum Regular
Posts: 984
Joined: Tue Sep 28, 2010 11:41 am
Location: Columbus, Ohio

Re: mysql_fetch_array() expects parameter 1 to be resource

Post by twinedev »

As mentioned, the mysql_query() returns false (instead of a database resource that mysql_fetch_array() requires) when the query fails, therefore you need to look at the query that assigned the value to $seselect and see why that query ran.

Part of programming is learning to debug where things go wrong and figure out why. var_dump() can be your friend to make sure variables contain what you think they should. Also, in this case you should echo out the query, like this the following, then manually run the query against the database to see the results:

Code: Select all

echo "select * from users WHERE id = $reff1";
My guess would be since $reff1 comes from the previous query, that there is not a value set for it in the database, or that your first query didn't actually return any rows, therefor $reff1 would never get set to anything to begin with. You should be doing checks to make sure data exists before just flat out running queries assuming they will be valid.

Lastly, there is the standard message, that since this is something you are currently building, you really should future proof it by not using deprecated (going to be gone from the code in the future) functions like the mysql_* set. Also you are opening code up to SQL injection by just directly taking values from users ($_POST) and using them in a query. At the very least you should be using mysql_real_escape_string() but even better would be prepared statements with something like PDO.
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Re: mysql_fetch_array() expects parameter 1 to be resource

Post by Christopher »

If your values are not numeric, you could try putting quotes around them. If the values are not numeric and not quoted, MySQL will error.

Code: Select all

echo "select * from users WHERE id = '$reff1'";
(#10850)
tem5olufe2007
Forum Newbie
Posts: 5
Joined: Sun Aug 10, 2014 2:46 pm

Re: mysql_fetch_array() expects parameter 1 to be resource

Post by tem5olufe2007 »

Thanks for all the comments.

The problem has been rectified. :D :D
Post Reply