如何将单个MySQL结果保存到PHP变量?

如何将单个MySQL结果保存到PHP变量?

问题描述:

I have this database that I've been working on, and I'm at the point where I'm trying to tie everything together and start integrating the information from my database tables into actual web pages. What I'm trying to do is to query the database for specific answers which I want to save to PHP variables so I can perform a simple <?php echo $variable; ?> throughout my webpage. However I can't seem to figure out how to do that.

Here's a sample of what I've been trying.

SQL

$Name = "John Smith";

$Nickname = $db->query('SELECT `Nickname` FROM `Profiles` WHERE `Name` =' . $Name);
$country = $db->query('Select `Country` from `Profiles` Where `Name` =' . $Name);

PHP/HTML

<div>
<table>
<tr>
<th colspan ="2"><?php echo $Name; ?></th>
</tr>
<tr>
<td>Country</td><td><?php echo $country; ?></td>
</tr>
<tr>
<td>Nickname</td><td><?php echo $Nickname; ?></td>
</tr>
</table>
</div>

This isn't EXACTLY what I've been doing, the table(s) I'm trying to plug this information into is/are far more complicated, which is why if at all possible, I'd like to avoid using the normal method of returning MySQL queries:

Code I'd like to avoid if possible

<?php
while ($rows = $country->fetch()){
echo ['Country'];
}
?>

In the event that the above code is still by far the simplest way to return any/all query results, I just have one question: Is it possible to nest different while ($rows = $variable->fetch()) statements within each other? Because my table has information from different database tables somewhat scattered throughout it and there are a couple of places where I would NEED to nest the WHILE statement. Would it work?

Edit:

So I've tried a couple of suggestions. First, I changed my SQL syntax for the $Name so that it will work in the SQL query.

`WHERE `Name` ="' . $Name . '"');`

So now that's working. But I've tried the other 2 suggestions and both are breaking my code (the page won't load).

Also, no one's answered my question about being able to nest While() Statements.

I figured it out! I was able to assign the results from my database query into variables that I could then recall through a simple <?php echo $variable; ?> at any time, as many times as needed. Here is what I did.

SQL Example

$result = $db->query('Select `Name`, `Age`, `Color` from `People` ');
while ($rows = $result->fetch()){
$Name = $rows['Name'];
$Age = $rows['Age'];
$Color = $rows['Color'];
}

In Webpage

<p>
Hello, my name is <?php echo $Name; ?>. 
I am <?php echo $Age; ?> years old and my favorite color is <?php echo $Color; ?>.
</p>

Use list() : http://php.net/list, with following example:

$info = array('coffee', 'brown', 'caffeine');

// Listing all the variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.
";

You should select more cols in your query instead of separate query's for each column.

Example (not tested):

$result = $db->query('SELECT Nickname, Country FROM `Profiles` WHERE `Name` =  "' . mysql_real_escape_string($Name) . '"');

$i = 0;
$nickNames = [];
$countries = [];

while ($row = $result->fetch())
{
    list($nickNames[$i], $countries[$i]) = $row;
    $i++;
}

echo 'The first nickname is: ' . $nickNames[0] . ' from this country: ' . $countries[0];

So you can use the separated array's.