Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用查询填充数组_Php - Fatal编程技术网

Php 用查询填充数组

Php 用查询填充数组,php,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

我试图用一次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["Linea 1 La Défense - Chateau de Vincennes", "Linea 1 La Défense - Chateau de Vincennes", "Linea 1 La Défense - Chateau de Vincennes", ...]

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

检查此编辑,修复并测试它。它与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();
?>

检查此编辑,修复并测试它。它与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();
?>

好的,最后我做了,我必须处理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;
        }

好的,最后我做了,我必须处理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;
        }


试试$rawdata['linea'][]=价值$valor<代码>$rawdata[]='Linea'$英勇
rawdata['linea']=$valor这是一个语法错误,缺少
$
,您也可能希望使用
$rawdata['linea'][]=$valor正如其他人所注意到的,感谢您的评论,现在我已经填充了数组,但始终使用相同的值(如下所示):原始数据[“Linea 1 La Défense-Vincennes城堡”,“Linea 1 La Défense-Vincennes城堡”,“Linea 1 La Défense-Chateau de Vincennes”,…]如何在每次迭代中更改值?尽管我给出了答案,还是尝试:var_dump($realresult);以及:var_dump($result);尝试….$rawdata['Linea'][=$valor;
$rawdata[]='Linea'.$valor;
rawdata['Linea']=$valor;
这是一个语法错误,缺少
$
,您也可能希望使用
$rawdata['Linea'][=$valor;
,就像其他人所说的那样感谢您的评论,现在我已经填充了数组,但总是使用相同的值,(像这样):原始数据[“莱纳1拉德芬斯-文森城堡”、“莱纳1拉德芬斯-文森城堡”、“莱纳1拉德芬斯-文森城堡”,…]如何在每次迭代中更改值?不管我的答案如何,请尝试:var_dump($realresult);以及:var_dump($result);如果我将$tipoTte改为'metro',但只显示第一行,则这不起作用,因为SELECT查询中的“tipoTte=$tipoTte”1 La Defense-Chateau de Vicennes“我以前尝试过mysqli_stmt_bind_param()函数,但它不起作用,如果我尝试var_dump($result),它会显示bool(false),所以失败了,我不知道为什么。编辑:我尝试了var_dump($rows[I$]);它向我展示了我想要的,很接近,我将尝试使用echoI。我刚刚修复并测试了它,请再试一次。它在我的服务器上工作。你可以将它放在函数中,用方法变量($tipoTte)替换$linea。它可以工作,但如果我使用mysqli_stmt_bind_param()函数,我就不能使用fetch_数组()函数,它不起作用,我想我必须使用mysqli_fetch_array(),但我想知道如何…我不知道为什么,但如果我使用mysqli_stmt_bind_param(),那么fetch_array()工作不正常…我想我可能是因为我的php版本,我不知道。最后我得到了我想要的我几天前在这里写的解决方案,谢谢你的帮助!这不起作用,因为选择查询中的“tipoTte=$tipoTte”,如果我把$tipoTte改为'metro',但只显示第一行“1 La Defense-Chateau de Vicennes“我以前尝试过mysqli_stmt_bind_param()函数,但它不起作用,如果我尝试var_dump($result),它会显示bool(false),所以失败了,我不知道为什么。编辑:我尝试了var_dump($rows[I$]);它向我展示了我想要的,很接近,我将尝试使用echoI。我刚刚修复并测试了它,请再试一次。它在我的服务器上工作。你可以将它放在函数中,用方法变量($tipoTte)替换$linea。它可以工作,但如果我使用mysqli_stmt_bind_param()函数,我就不能使用fetch_数组()函数,它不起作用,我想我必须使用mysqli_fetch_array(),但我想知道如何…我不知道为什么,但如果我使用mysqli_stmt_bind_param(),那么fetch_array()没有很好地工作…我想我可能是因为我的php版本,我不知道。最后我得到了我想要的我在几天前在这里写的解决方案,谢谢你的帮助!