Я пытаюсь заполнить один массив данными, полученными при выполнении одного запроса 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;rawdata['linea'] = $valor; - это синтаксическая ошибка, в которой отсутствует $, также вы можете использовать $rawdata['linea'][] = $valor;, как отмечают другие.
Спасибо за ваши комментарии, теперь у меня есть массив, заполненный, но всегда с одним и тем же значением (вот так): 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 ", ...] как я могу изменять значение на каждой итерации?
Несмотря на мой ответ, попробуйте: var_dump ($ realresult); а также: var_dump ($ result);






Проверьте эту правку, исправьте и протестируйте. Работает с 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»
Я пробовал использовать функцию mysqli_stmt_bind_param () раньше, и это не сработало, если я попробую var_dump ($ result), он покажет мне bool (false), поэтому он не работает, я не знаю, почему человек. Обновлено: Я пробовал var_dump ($ rows [i $]); И это показало мне, что я хочу, это близко, парень, я попробую с эхом
Я только что исправил и протестировал, попробуйте еще раз, пожалуйста. Он работает на моем сервере. Вы можете поместить его в свою функцию и заменить $ linea переменной вашего метода ($ tipoTte).
Это работает, но если я использую функцию mysqli_stmt_bind_param (), я не могу использовать функцию fetch_array (), она не работает, я полагаю, мне нужно использовать mysqli_fetch_array (), но я пытаюсь узнать, как ...
Этот код работает - здесь нет ошибок. Какую ошибку вы получаете?
Я не знаю почему, но если я использую mysqli_stmt_bind_param (), тогда fetch_array () не работает должным образом ... Думаю, это могло быть из-за моей версии php, я не знаю. Наконец-то я получил то, что хочу. Я написал решение здесь пару дней назад, спасибо за вашу помощь, человек!
Итак, наконец, я делаю это, мне нужно работать с несовместимостью между версиями и методами 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;