Php 从SQL数据库填充多个列表
这里已经有类似的问题,但没有一个完全适合我的情况。基本上,我想用MYSQL数据库中的相同数据填充数量可变的选择菜单。原因是我希望用户能够添加行以同时提交多个选项 为了避免对select菜单的每个实例执行MYSQL的登录-->读取,我创建了一个数组,在必要时用于填充菜单。问题是,它只在第一个阶段起作用;换句话说,PHP会在第一次读取后删除数组中存储的值 如果这个问题很基本,我很抱歉,我对PHP很陌生 以下是我目前的代码: 要访问MYSQL并定义变量“result”:Php 从SQL数据库填充多个列表,php,mysql,Php,Mysql,这里已经有类似的问题,但没有一个完全适合我的情况。基本上,我想用MYSQL数据库中的相同数据填充数量可变的选择菜单。原因是我希望用户能够添加行以同时提交多个选项 为了避免对select菜单的每个实例执行MYSQL的登录-->读取,我创建了一个数组,在必要时用于填充菜单。问题是,它只在第一个阶段起作用;换句话说,PHP会在第一次读取后删除数组中存储的值 如果这个问题很基本,我很抱歉,我对PHP很陌生 以下是我目前的代码: 要访问MYSQL并定义变量“result”: <?php $
<?php
$servername = "localhost";
$username = "sonch_PUBLIC";
$password = "sonch_PUBLIC";
$dbname = "sonch_MAIN";
date_default_timezone_set('Europe/Zurich');
$date = date('Y-m-d');
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//START SEARCH BY VENUE
$sql = "SELECT Name, City FROM Venue ORDER BY City";
$result = $conn->query($sql);
$conn->close();
?>
要填充的第一个实例,请执行以下操作:
<select style="width:138px; text-align:center">
<option selected>CHOOSE VENUE</option>';
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<option>" . $row["Name"] . " - " . $row["City"] . "</option>";
}
}
?>
</select>
选择地点;;
到目前为止还不错。。。。但当我想用相同的代码填充后续菜单时,即通过重复:
<select style="width:138px; text-align:center">
<option selected>CHOOSE VENUE</option>';
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<option>" . $row["Name"] . " - " . $row["City"] . "</option>";
}
}
?>
</select>
选择地点;;
……它们是空的
建议?您的第一个
循环时:
while($row = $result->fetch_assoc()) {
echo "<option>" . $row["Name"] . " - " . $row["City"] . "</option>";
}
data\u seek
将结果集读取指针移动到指定的行号。在本例中,我们将其移回第0行,或结果集的开头。完成后,您可以在第一次循环时再次完整读取结果集:
while($row = $result->fetch_assoc()) {
echo "<option>" . $row["Name"] . " - " . $row["City"] . "</option>";
}
data\u seek
将结果集读取指针移动到指定的行号。在本例中,我们将其移回第0行,或结果集的开头。完成此操作后,您可以再次完整读取结果集您没有创建要多次使用的数组。您正在处理一个结果集。一旦您使用了结果集,它就完成了。按照您的建议进行操作,并将结果集处理到一个数组中,然后重用该数组
<?php
$servername = "localhost";
$username = "sonch_PUBLIC";
$password = "sonch_PUBLIC";
$dbname = "sonch_MAIN";
date_default_timezone_set('Europe/Zurich');
$date = date('Y-m-d');
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//START SEARCH BY VENUE
$sql = "SELECT Name, City FROM Venue ORDER BY City";
$result = $conn->query($sql);
// If you have the MySQL Native Driver installed
//$allRows = $result->fetch_all();
// if you dont have the MySQL Native Driver installed you will have to do this
$allRows = array();
while ($row = $result->fetch_assoc() ) {
$allRows[] = $row;
}
$conn->close();
?>
一审
<select style="width:138px; text-align:center">
<option selected>CHOOSE VENUE</option>';
<?php
foreach ($allRows as $row) {
echo "<option>" . $row["Name"] . " - " . $row["City"] . "</option>";
}
?>
</select>
选择地点;;
只要您愿意多次重用该阵列,您就不会创建要多次使用的阵列。您正在处理一个结果集。一旦您使用了结果集,它就完成了。按照您的建议进行操作,并将结果集处理到一个数组中,然后重用该数组
<?php
$servername = "localhost";
$username = "sonch_PUBLIC";
$password = "sonch_PUBLIC";
$dbname = "sonch_MAIN";
date_default_timezone_set('Europe/Zurich');
$date = date('Y-m-d');
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//START SEARCH BY VENUE
$sql = "SELECT Name, City FROM Venue ORDER BY City";
$result = $conn->query($sql);
// If you have the MySQL Native Driver installed
//$allRows = $result->fetch_all();
// if you dont have the MySQL Native Driver installed you will have to do this
$allRows = array();
while ($row = $result->fetch_assoc() ) {
$allRows[] = $row;
}
$conn->close();
?>
一审
<select style="width:138px; text-align:center">
<option selected>CHOOSE VENUE</option>';
<?php
foreach ($allRows as $row) {
echo "<option>" . $row["Name"] . " - " . $row["City"] . "</option>";
}
?>
</select>
选择地点;;
只要您愿意多次重复使用该数组所讨论的页面是:。。。。您可以看到,在第一个实例中填充了“选择场地”选项,但当添加新行时,菜单为空。您没有创建要多次使用的阵列。您正在处理一个结果集。一旦您使用了结果集,它就完成了。按照你的建议去做,将结果集处理成一个数组,然后重新使用ArrayTanks来获得答案!我以为我已经将“result”设置为数组。。。。。你能告诉我怎么改吗?有问题的那一页是:。。。。您可以看到,在第一个实例中填充了“选择场地”选项,但当添加新行时,菜单为空。您没有创建要多次使用的阵列。您正在处理一个结果集。一旦您使用了结果集,它就完成了。按照你的建议去做,将结果集处理成一个数组,然后重新使用ArrayTanks来获得答案!我以为我已经将“result”设置为数组。。。。。你能告诉我怎么改变吗?太棒了!成功了。我不得不承认,我并不完全明白为什么。我知道数据正在读取,无法再次读取,但这一行是如何改变的?data\u seek
将结果集读取指针移动到指定的行号。在本例中,我们将其移回第0行,或结果集的开头。完成后,您可以再次完整阅读结果集。太棒了!成功了。我不得不承认,我并不完全明白为什么。我知道数据正在读取,无法再次读取,但这一行是如何改变的?data\u seek
将结果集读取指针移动到指定的行号。在本例中,我们将其移回第0行,或结果集的开头。完成后,您可以再次完整阅读结果集。对不起,我显然在做一些愚蠢的事情。。。。。当我添加代码时,页面不再显示(=控制台中的$0)…如果我从您提供给我的代码中删除“fetch_all()”,一切都会正常工作。。。。但我不喜欢盲目地侵入代码,直到它达到我想要的程度……这毫无意义。如果删除fetch_all()
,则数组将为空,并且将没有要输出的数据。。。。嗯,情节越来越复杂啊,我打赌我知道是什么。。。。您的系统没有安装MySQL本机驱动程序。因此fetch_all()
将无法工作。两秒钟后我会修改accordinglyOk尝试foreach循环卸载结果集并创建arrayI抱歉,我显然在做一些愚蠢的事情。。。。。当我添加代码时,页面不再显示(=控制台中的$0)…如果我从您提供给我的代码中删除“fetch_all()”,一切都会正常工作。。。。但我不喜欢盲目地侵入代码,直到它达到我想要的程度……这毫无意义。如果删除fetch_all()
,则数组将为空,并且将没有要输出的数据。。。。嗯,情节越来越复杂啊,我打赌我知道是什么。。。。您的系统没有安装MySQL本机驱动程序。因此fetch_all()
将无法工作。两秒钟后,我将修改accordinglyOk,尝试foreach循环卸载结果集并创建数组