2014-10-02 131 views
-1

如何從mysql發送多個數據到一個php數組並回顯前兩個條目? 在我的數據庫中,我有列名,xkoord,ykoord。 我試過用json,但我想這不起作用。我有如下:將多個數據從mysql發送到一個php數組

function load_db($var, $xkoord, $ykoord){ 
global $db; 
$result = mysqli_query($db,"SELECT $var FROM armydb WHERE xkoord = '$xkoord' AND ykoord = '$ykoord'") OR DIE ('Fehler!'); 
$json = mysqli_fetch_all ($result, MYSQLI_ASSOC); 
echo json_encode($json); 
} 

我調用這個函數是這樣的:

<?php 
$name_array = json_decode(load_db('name', 1, 0), true); 
echo $name_array[0]; 
echo $name_array[1]; 
?> 

這行不通。 有何建議?

+0

如果這些變量來自用戶的輸入,你應該使用預處理語句,否則你會會把自己暴露給SQL注入。 – Mike 2014-10-02 15:11:19

回答

0

嘗試

function load_db($var, $xkoord, $ykoord){ 
global $db; 
$result = mysqli_query($db,"SELECT $var FROM armydb WHERE xkoord = '$xkoord' AND ykoord = '$ykoord'") OR DIE ('Fehler!'); 
$resultset = mysqli_fetch_all ($result, MYSQLI_ASSOC); 
return $resultset; 
} 

print_r(load_db('name', 1, 0)); 

你不必結果編碼爲JSON,因爲你可以return的數據,並通過

1

您需要使用return,不echo功能等等之間吧:

return json_encode($json); 

echo只是打印它的參數,它不會將其返回給函數的調用者。

此外,$name_array將是一個2維數組:第一維是結果的行,第二維是列的關聯數組。所以$array[0]是一個數組,你不能有用地回顯​​。你應該這樣做:

echo $name_array[0]['name']; 
echo $name_array[1]['name']; 

你爲什麼首先使用json_encode()?爲什麼不只是返回數組?

+0

感謝這些信息! – 2014-10-02 15:53:26

0

讓我們更容易

<?php 
$query = mysql_query("select * from armydb where xkoords = '$xcords' and ycords = '$cords'"); 
// now if you need 1 row; 
$row = mysql_fetch_assoc($query); 
echo $row['name']; 

// if u need more then one 
while ($row = mysql_fetch_assoc($query)) { 
echo $row['name']; 
} 

?> 
+0

如果我這樣做,並且我的數據庫中的名字是Dasy,我只會得到一個D回顯,而不是完整的文本,爲什麼是這樣,我能做些什麼來獲得完整的名稱? – 2014-10-02 15:51:44

+0

@SaschaKrause如果你做了echo $ row ['name'] [0]',你會得到。索引字符串會返回該位置的字符。 – Barmar 2014-10-02 19:30:35

+0

'name'應該引用:'echo $ row ['name']'。 – Barmar 2014-10-02 19:31:15