PHP使用查询填充数组

时间:2018-04-12 14:34:59

标签: php

我正在尝试使用一个sql select查询执行获得的数据填充一个数组但是我不能这样做,如果有人请帮助我。

我仍然非常喜欢在php上编程,所以很抱歉,可能这是非常糟糕的编码,但我不知道如何使用foreach循环填充数组。

sql数据库服务器返回的数据是:

1 La Defense - Chateau de Vincennes
2 Porte Dauphine - Nation
3 Pont de Levallois Becon - Gallieni
3bis Gambetta - Porte des Lilas
4 Porte de Clignancourt - Mairie de Montrouge
5 Bobigny Pablo Picasso - Place d’Italie
6 Charles de Gaulle Etoile - Nation
7 Louis Leblanc - Pre Saint Gervais
8 Balard - Pointe du Lac
9 Pont de Sèvres - Mairie de Montreuil
10 Boulogne Pont de Saint Cloud - Gare d’Austerlit...
11 Chatelet - Mairie des Lilas
12 Front Populaire - Mairie d’Issy
13 Gare Saint Lazare - Olympiades

我的php功能是:

function select($tipoTte) {
       $connection = connectDB();

       $sql = mysqli_prepare($connection, "SELECT DISTINCT linea FROM lugar_transporte WHERE tipoTte = ?");
       mysqli_stmt_bind_param($sql, "s", $tipoTte);

       $query = $sql->execute();

       if(!$query)
          die();

       $result = $sql->store_result();

       $realresult = $sql->bind_result($linea);

       $rawdata = array();

       $sql->fetch();

       for($i = 0; $i < 14; $i++) {
          $rawdata[$i] = utf8_encode($linea);
       }

       disconnectDB($connection);
       return $rawdata;
}

如何使用查询中的所有行填充rawdata数组?我的意思是我想rawdata有这样的数据:

rawdata["Linea 1 La Défense - Chateau de Vincennes", "Linea 2 Porte Dauphine - Nation ", ...] 

编辑:好的,我得到了新版本的代码:

rawdata["Linea 1 La Défense - Chateau de Vincennes", "Linea 1 La Défense - Chateau de Vincennes", "Linea 1 La Défense - Chateau de Vincennes", ...]

如何迭代抛出查询结果的行?我不知道我是否正确解释自己......

2 个答案:

答案 0 :(得分:1)

检查此编辑,修复并测试。它使用php7和mysql 5.6。

<?php

$mysqli = new mysqli("localhost", "username", "password", "dbname");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$linea = "0";
$query = "SELECT DISTINCT linea FROM lugar_transporte WHERE tipoTte = ?";
$stmt1 = mysqli_prepare($mysqli, $query);
mysqli_stmt_bind_param($stmt1, "s", $linea);
$result = $mysqli->query($query);
var_dump($result);
while($row = $result->fetch_array())    {
    $rows[] = $row;
}
$rawdata = array();
$i = 0;
foreach($rows as $row)    {
    $rawdata[$i] = utf8_encode($row[$i]);
    echo $rawdata["$i"];
    $i++;
}

/* free result set */
$result->close();

/* close connection */
$mysqli->close();
?>

答案 1 :(得分:1)

好的,所以最后我这样做,我必须处理php版本和方法之间的不兼容性,但这是最终版本,我得到了我想要的阵列,非常感谢你们所有帮助过我的人,特别是佩德罗布兰科,如果我能拥抱你,我就做人。

所以,如果有人需要或有同样的问题,这里是最终版本:

function select($tipoTte) {
            $connection = connectDB();

            var_dump($result);*/

            $stmt = $connection->prepare("SELECT DISTINCT linea FROM lugar_transporte WHERE tipoTte = ?");
            $stmt->bind_param('s', $tipoTte);

            $stmt->execute();

            $result = $stmt->get_result();

            while($row = $result->fetch_assoc())    {
                    $rows[] = $row;
                    }
            $rawdata = array();
            $i = 0;

                    foreach($rows as $row)    {
                        $rawdata[$i] = $rows[$i];
                        $i++;
                }
                    var_dump($rawdata);

            $result->close();

                disconnectDB($connection);
                return $rawdata;
        }