Page 1 of 1

mysql_fetch_array() expects parameter 1 to be resource

Posted: Mon Jan 05, 2015 4:28 am
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

Re: mysql_fetch_array() expects parameter 1 to be resource

Posted: Mon Jan 05, 2015 6:48 am
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.

Re: mysql_fetch_array() expects parameter 1 to be resource

Posted: Mon Jan 05, 2015 10:23 am
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>'; }
                }
}

Re: mysql_fetch_array() expects parameter 1 to be resource

Posted: Mon Jan 05, 2015 12:31 pm
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.

Re: mysql_fetch_array() expects parameter 1 to be resource

Posted: Mon Jan 05, 2015 5:44 pm
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'";

Re: mysql_fetch_array() expects parameter 1 to be resource

Posted: Tue Jan 06, 2015 5:24 am
by tem5olufe2007
Thanks for all the comments.

The problem has been rectified. :D :D