Maybe I am not understanding correctly, but from what I think I understand:
A user creates a character.
When that user creates a character, an SQL query looks up the "species" that they have chosen to find its strength and then inserts that into an SQL INSERT query.
This is how I would do the SQL statement that you have given:
$getPetData = mysql_query("SELECT * FROM pets2 WHERE name = '$species'")
or die(mysql_error());
$petData = mysql_fetch_array($getPetData);
You can now do one of two things, you could replace every occurance of $pet_str with $petData['pet_strength'] or you could write:
$pet_str = $petData['pet_strength'];
This would mean you wouldn't have to change any variables (so this might be the better option).
Also, looking at your code; your SQL query that you have entered is almost identical to the one above it:
$findGetFirsts = fetch("SELECT * FROM pets2 WHERE game = '$game' AND id = '$species'");
$pet_str = fetch("SELECT $pet_strength FROM pets2 WHERE name = '$species'");
Instead of creating your own SQL statement, can you not just do something like:
$pet_str = $findGetFirsts[pet_strength];
On a final note, if you do decide to go down the route of using a second SQL statement, I notice that your statement ends with "WHERE name ='$species')" and the line above it uses "AND id = '$species'")". Looking at the table you have provided, the columns 'name' and 'id' contain completely different information (as expected) but you are using the same variable ($species) for both. The problem with this is if this variable contains an ID number for the id column, you will never find any results containing this information under the 'name' column, and vice versa if it contains a name, it will never find any information under the ID column.