2016-09-19 64 views
1

我有一个MySQL数据库,“水果”,用10行是这样的:PHP:变量如何从MySQL Query中分配值?

id | variable | value 
1 | apples | 5 
2 | oranges | 6 

我怎样才能有效地使用查询分配PHP变量的值,这样我就可以在其他地方使用它们:
$苹果= 5;
$ oranges = 6;

或者换一种说法,根据数据库中的'变量'列为PHP变量赋值。

我可以使它工作的唯一办法是这样的:

$con = mysqli_connect($servername, $username, $password, $dbname); 

$sql="SELECT variable, value FROM fruits where variable = 'oranges'"; 
$result=mysqli_query($con,$sql); 
$row=mysqli_fetch_array($result,MYSQLI_ASSOC); 
$oranges = $row["value"]; 

我能做到这一点的10倍,但它似乎很可怕,必须有一个更好的办法,大概涉及到某种循环。在这个(清晰)非常完整的代码中,不是专业人员,所以我可以看到它是如何工作的,我们将非常感激。

感谢您的帮助!

+3

您可能正在寻找[variable variables](http://php.net/manual/en/language.variables.variable.php),尽管在几乎每种情况下,最好使用数组。有一个数组,例如'$ fruits [$ row ['variable']] = $ row ['value'];',然后使用'echo $ fruits ['oranges'];'(一定要在数组之前定义数组进入循环,避免* Undefined variable ... * notices)。 – Qirel

+0

'extract array_column($ row,'value','variable');'但是@Qirel说,最好用数组来代替 –

+0

你知道db中的值的顺序,就像苹果然后橙色然后... –

回答

2

这里可变变量的一个例子:

$sql="SELECT * FROM fruits"; 
$result = mysqli_query($conn,$sql); 

if ($result->num_rows > 0) { 

    while ($row = $result->fetch_assoc()) { 
     $variable = $row["variable"]; 
     $$variable = $row["value"]; 

     echo("Name: " . ${variable} . " Value: " . $$variable . "<br>"); 
    } 
} 

问候

-1

我看不到有这样一个理由。 数组本身就是一个变量。使用$ rows [2] ['variable']或$ rows [1] ['value']访问任何单个元素是非常容易的。

但是,如果你真的需要一些混乱,你可以结合extract()和一个foreach循环。

1

可以利用这一点。

$con = mysqli_connect($servername, $username, $password, $dbname); 

$sql="SELECT variable, value FROM fruits"; 
$result=mysqli_query($con,$sql); 
while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){ 
    ${row["variable"]}= $row["value"]; 
}