【问题标题】:send multiple data from mysql to a php array将多个数据从 mysql 发送到 php 数组
【发布时间】:2014-10-02 15:03:44
【问题描述】:

如何将多个数据从 mysql 发送到 php 数组并回显前两个条目? 在我的数据库中,我有列名 xkoord、ykoord。 我已经尝试过使用 json,但我想这不起作用。我有以下内容:

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];
?>

这不起作用。 有什么建议吗?

【问题讨论】:

  • 如果这些变量来自用户输入,您应该使用准备好的语句,否则您将面临 SQL 注入。

标签: php mysql arrays json


【解决方案1】:

你需要使用return,而不是echo

return json_encode($json);

echo 只是打印它的参数,它不会将它返回给函数的调用者。

另外,$name_array 将是一个二维数组:第一维是结果的行,第二维是列的关联数组。所以$array[0] 是一个数组,你不能有用地回显​​它。你应该这样做:

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

你为什么首先使用json_encode()?为什么不直接返回数组?

【讨论】:

  • 感谢您提供这些信息!
【解决方案2】:

试试

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 数据并在函数等之间传递它。

【讨论】:

    【解决方案3】:

    让我们更轻松

    <?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'];
    }
    
    ?>
    

    【讨论】:

    • 如果我这样做,并且我的数据库中的名字是 Dasy,我只会得到一个 D 回显,而不是完整的文本,为什么会这样,我该怎么做才能获得完整的名字?
    • @SaschaKrause 如果你这样做了echo $row['name'][0],你就会明白这一点。索引字符串会返回该位置的字符。
    • name 应该被引用:echo $row['name']
    • 为命名 tx @barmar 添加了引号。 Sascha 确保您使用的是精确的代码。我的东西你用 $row['name'][0];你只需要使用 $row['name']。如果你想使用超过 1 行,我建议使用 while。
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多