2016-09-19 61 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"]; 
}