我正在尝试使用一个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", ...]
如何迭代抛出查询结果的行?我不知道我是否正确解释自己......
答案 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;
}