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", ...]

Как я могу перебрать строки результата запроса? Не знаю, правильно ли я объясняюсь ...

Попробуйте .... $ rawdata ['linea'] [] = $ valor;

Chris 12.04.2018 16:38
$rawdata[] = 'Linea ' . $valor;
ponury-kostek 12.04.2018 16:39
rawdata['linea'] = $valor; - это синтаксическая ошибка, в которой отсутствует $, также вы можете использовать $rawdata['linea'][] = $valor;, как отмечают другие.
ArtisticPhoenix 12.04.2018 16:41

Спасибо за ваши комментарии, теперь у меня есть массив, заполненный, но всегда с одним и тем же значением (вот так): 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 ", ...] как я могу изменять значение на каждой итерации?

DavidZam 12.04.2018 17:40

Несмотря на мой ответ, попробуйте: var_dump ($ realresult); а также: var_dump ($ result);

Curious Mind 12.04.2018 18:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
215
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проверьте эту правку, исправьте и протестируйте. Работает с 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();
?>

Это не работает из-за «tipoTte = $ tipoTte» в запросе SELECT, если я поставлю «метро» вместо $ tipoTte, работает, но покажет только первую строку «1 La Defense - Chateau de Vicennes»

DavidZam 12.04.2018 18:39

Я пробовал использовать функцию mysqli_stmt_bind_param () раньше, и это не сработало, если я попробую var_dump ($ result), он покажет мне bool (false), поэтому он не работает, я не знаю, почему человек. Обновлено: Я пробовал var_dump ($ rows [i $]); И это показало мне, что я хочу, это близко, парень, я попробую с эхом

DavidZam 12.04.2018 18:54

Я только что исправил и протестировал, попробуйте еще раз, пожалуйста. Он работает на моем сервере. Вы можете поместить его в свою функцию и заменить $ linea переменной вашего метода ($ tipoTte).

Curious Mind 12.04.2018 19:17

Это работает, но если я использую функцию mysqli_stmt_bind_param (), я не могу использовать функцию fetch_array (), она не работает, я полагаю, мне нужно использовать mysqli_fetch_array (), но я пытаюсь узнать, как ...

DavidZam 12.04.2018 19:44

Этот код работает - здесь нет ошибок. Какую ошибку вы получаете?

Curious Mind 13.04.2018 12:02

Я не знаю почему, но если я использую mysqli_stmt_bind_param (), тогда fetch_array () не работает должным образом ... Думаю, это могло быть из-за моей версии php, я не знаю. Наконец-то я получил то, что хочу. Я написал решение здесь пару дней назад, спасибо за вашу помощь, человек!

DavidZam 14.04.2018 13:41
Ответ принят как подходящий

Итак, наконец, я делаю это, мне нужно работать с несовместимостью между версиями и методами 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;
        }

Другие вопросы по теме