2014-10-02 134 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