我正在尝试让我的PHP在下拉菜单中显示所有产品名称。但是它只显示第一行两次。
$prodNameSQL="select prodName from product";
//execute SQL query or return an error
$exeProdNameSQL=mysql_query($prodNameSQL) or die(mysql_error());
//create array of records & populate it with result of the execution of the SQL query
$array=mysql_fetch_array($exeProdNameSQL);
echo "<select name='productCombo'>";
foreach($array as $value) {
echo "<option value=".$value.">".$value;
echo "</option>";
}
echo "</select>";
我知道我应该使用mysqli并且mysql被折旧但是它超出了我的控制范围。
感谢。
答案 0 :(得分:1)
当您调用mysql_fetch_array
时,mysql驱动程序会从结果集中返回一行。通过对该结果(foreach
)执行$array
,您实际上会循环遍历单行中的列。
你需要执行:
while ($array = mysql_fetch_array($exeProdNameSQL)) {
// output your dropdown options here
}
这将允许您迭代查询返回的每个结果。
此外,mysql
扩展程序很久以前已被弃用(php5.5),并且php5.6已达到使用寿命,并且基本上也已弃用。 mysql
扩展名不可用php7.0 +,因此如果您尝试在最新的系统上运行此代码,它将失败。
答案 1 :(得分:0)
尝试使用结果集,而不是使用fetch_assoc(),然后使用像这样的while循环
while($row = mysql_fetch_assoc($result)){
echo "<option value=".$row['prodName '].">".$row['prodName ']."</option";
}
答案 2 :(得分:0)
首先检查$ array是否包含结果
<?php
if ($array) {
while ($row = mysqli_fetch_array($array, MYSQLI_ASSOC)) {
echo "<option value=".$row['name'].">".$row['value']."</option>";
}
} else {
echo "<p>". mysqli_error($connection) ."</p>";
}