Php 用查询填充数组
我试图用一次sql select查询执行获得的数据填充一个数组,但我做不到,如果有人能帮我的话 我对php编程还是很陌生,所以很抱歉,这可能是非常糟糕的编码,但我不知道如何用foreach循环填充数组 sql数据库服务器返回的数据是: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
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版本,我不知道。最后我得到了我想要的我在几天前在这里写的解决方案,谢谢你的帮助!