我正在从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";
}
你的引号在数组中是向后的
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]
但是这不是一个好的做法,因为如果在define()中有一个名为index的常量,那么你所有的语句都将使用你的常量定义,而不是你想要的字符串。
假设查询实际执行,问题在于如何将数组值初始化为数组键。在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
的东西的隐患。
必须引用数组键Name, Value, ID
:
$options[] = array('Name' => "$row['Name']", 'Value' => "$row['Value']", 'ID' => "$row['CID']");
在"$row['key']"
周围加引号是不必要的,也是多余的。
PHP数组文档