我正在从MySQL数据库填充一个数组,问题是我在下拉框中得到9个空白字段,我正在尝试填充它。我做错了什么?
php代码:
while($row = mysql_fetch_assoc($results))
{
$options[] = array(
Name => $row['Name'],
Value => $row['Value'],
ID => $row['CID']
);
}
下拉框:
for ($i = 0; $i < 9; $i++)
{
print '<option id="'.$options[$i]["ID"].'" value="'.$options[$i]["Value"].'">'
.$options[$i]["Name"].
'</option>'."\n";
}
答案 0 :(得分:2)
您的报价在数组中向后
while($row = mysql_fetch_assoc($results))
{
$options[] = array("Name" => $row['Name'], "Value" => $row['Value'], "ID" => $row['CID']);
}
此外,在双引号中使用关联数组需要您这样做:
echo "I want to print out this: {$arr['index']}";
如果你不这样做,它(应该)会导致解析错误。
您可能会注意到这也有效
echo $arr[index]
但这不是一个好习惯,因为如果通过一个名为index的define()有一个常量,那么你的所有语句都将使用你的常量定义而不是你想要的字符串。
答案 1 :(得分:2)
假设您的查询实际执行,问题在于您如何将数组值初始化为数组键。在PHP中,关联数组的键必须是字符串,PHP中的字符串用单引号或双引号引用。
$foo = array(Name => 'value'); // incorrect, Name isn't a string
$foo = array('Name' => 'value'); // correct
访问关联数组还需要使用键的字符串:
$foo[Name] // incorrect, Name isn't a string
$foo['Name'] // correct
在双引号字符串中使用数组时,为了得到它们的值,你应该用大括号包围数组:
"$foo['Name']" // can cause problems
"{$foo['Name']}" // good practice
请注意,您可以将该技术用于带有常规变量的大括号:
$bar = "Hello";
$foo['Name'] = "World";
echo "{$bar} {$foo['Name']}"; // prints Hello World!
如果您只想保存所有行,则只需存储整个$row
数组:
$options[] = $row;
而不是将每个单独的值从数组复制到数组。这更简洁,更易读,更不容易出错,并且如果$row
的内容发生变化,则会进行概括。当然,如果$row
的内容发生变化,则可能需要更改依赖于$options
的内容。
答案 2 :(得分:0)
您必须引用数组键Name, Value, ID
:
$options[] = array('Name' => "$row['Name']", 'Value' => "$row['Value']", 'ID' => "$row['CID']");
在"$row['key']"
周围放置引号是不必要且多余的。