Jump to content

problem with an array


IGGt

Recommended Posts

I'm sure there must be a way to do whatI am after, as it seems like such an obvious thing to do, but I can't figure it out.

 

1. I have an array which contains a list of database's and their connections

$slaveRes_array[0] = array('server' => 'localhost:3306',
                             'user' => $u,
                             'password' => $p,
                             'database' => 'MySQL01_5083',
                             'sendmail' => '0',
                             'repeat' => '0',
                             'dbID' => '1'
                                           );
and so on 10 times

 

I then have a list of MySQL Queries: (at the moment there is only one, but there will be more later on).

$query_array[] = array(	'query1' => "SHOW SLAVE STATUS");

 

The idea is that I take the first database from $slaveRes_array, connect to it, and run each query from the $query_array in turn against that database, and ultimately pass that resultset into an array that I can refer back to later on.

 

Within $slaveRes_array I have a DB name (e.g. MySQL01_5083), I want this to be the first entry in my resultset array, so I can reference this.

 

However, not all database's will return a result.

 

So what I want to end up with is something like:

 

[0] => Array ( [name] => MySQL02_5083 )

                    ( [slave_IO_State] => Waiting for master to send event)...

 

(in this case the first server (MySQL01) didn't return a result, so the first item in the array is MySQL02.

 

I have found lots of ways to achieve bits of this, but none that work together.

 

I can get a list of database names that returned a result, but can't get the data to return to the array (or any array).

 

I can get the data into an array, but not the database names.

 

Surely this must be something straight forward that people do all the time, right? 

Link to comment
Share on other sites

What I have so far is:

 

//make the relevant connection
for($a = 0; $a <sizeof($slaveRes_array); $a++) 	{
$con = mysql_connect($slaveRes_array[$a]['server'], $slaveRes_array[$a]['user'], $slaveRes_array[$a]['password']); 
mysql_select_db($dbs, $con);      
for($b = 0; $b <sizeof($query_array); $b++) {
	$slaveState = mysql_query($query_array[$b]['query1'], $con); 

 

and then two options:

 

while(($slave_array2[] = mysql_fetch_assoc($slaveState)) || array_pop($slave_array2));

 

and:

while($row = mysql_fetch_assoc($slaveState)) {
			if (($row['Slave_IO_Running'] == "No") || ($row['Slave_IO_Running'] == "Yes")) { //it should always report Yes / No / or nothing. Nothing means there is no resultset, and so this database should be ignored.
				$slave_array[]['name'] = $slaveRes_array[$a]['database'];}	
			 else { print "nothing";};
			}

 

Both of these work individually, but they don't work together. Whichever one I put on top runs, and the second one basically gets ignored.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.