当我尝试使用字符串
引用索引时,我收到错误错误:
注意:未定义的索引:第17行的C:\ Program Files \ EasyPHP中的subject_id
代码:
$Pages = mysql_query("select * from pages where subject_id ={$Row["subject_id"]}",$Connection);
while ($PageRow = mysql_fetch_array($Pages))
{
echo "<li>{$PageRow["menu_name"]}</li>";
}
但如果我使用整数索引,它可以正常工作,
echo "<li>{$Row[2]}</li>";
我在示例代码中看到相同的代码并且它有效,是MySQl数据库设置的问题吗?
答案 0 :(得分:2)
您没有将结果行作为关联数组提取&amp;虽然你使用花括号,我会将引号改为单引号,只是为了保持一致性。 改为:
$SubjectSet = mysql_query("select * from subjects" , $Connection);
while($Row = mysql_fetch_assoc($SubjectSet)) // change to mysql_fetch_assoc()
{
echo "<li>{$Row['menu_name']}</li>"; // use single quotes
}
你可以检查一下键和键。使用以下命令开始返回值:
$SubjectSet = mysql_query("select * from subjects" , $Connection);
while($Row = mysql_fetch_assoc($SubjectSet)) // change to mysql_fetch_assoc()
{
print_r($Row);
}
答案 1 :(得分:1)
您可以尝试使用单引号:
$SubjectSet=mysql_query("select * from subjects",$Connection);
while($Row=mysql_fetch_assoc($SubjectSet))
{
echo"<li>{$Row['menu_name']}</li>";// line 17
}
<强> CORRECTION:强>
刚刚注意到你没有使用assoc抓取。如果您希望使用其名称访问列,请使用mysql_fetch_assoc()
方法。
答案 2 :(得分:1)
您已将错误指定为
注意:C:\ Program Files \ EasyPHP at中的未定义索引: subject_id 第17行
,所以subject_id应该是问题所在。在示例代码中,您将menu_name作为数组的键。那么是哪一个呢?这张表的栏目是什么?如果表中有“menu_name”列,则您提供的代码将起作用。
问题应该是您要访问的列的名称。再次检查。
答案 3 :(得分:0)
你试过吗?
$SubjectSet=mysql_query("select * from subjects",$Connection);
while($Row=mysql_fetch_array($SubjectSet)) {
echo"<li>".$Row["menu_name"]."</li>";
}
答案 4 :(得分:0)
这是echo中的引号...你在两个实例中都使用双引号会破坏字符串(不应该,因为你用花括号包裹它,但是仍然...)。
尝试:
echo"<li>{$Row['menu_name']}</li>";
如果这不起作用 - 确保从数据库中获取关联数组;您可能需要将常量MYSQL_ASSOC
或MYSQL_BOTH
传递给查询(但默认情况下,它应使用MYSQL_BOTH
)。
$Row=mysql_fetch_array($SubjectSet, MYSQL_ASSOC)
答案 5 :(得分:0)
:)将MYSQL_ASSOC
与mysql_fetch_array()
一起使用或改为使用mysql_fetch_assoc()
:
while($Row=mysql_fetch_array($SubjectSet, MYSQL_ASSOC))
或
while($Row=mysql_fetch_assoc($SubjectSet))
您可以阅读this。我试着尽可能缩短你的时间!