当我尝试使用字符串
引用索引时,我得到错误错误:
注意:第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数据库设置的问题吗?
您不是作为关联数组获取结果行&虽然你使用花括号,我将改变单引号只是为了保持一致性。改成:
$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);
}
你已经给出了错误
注意:未定义索引:subject_id在C:'Program Files'EasyPHP at第17行
,所以subject_id应该是问题所在。在示例代码中,您使用menu_name作为数组的键。那么,到底是哪一个呢?这个表有哪些列?如果表中有"menu_name"列,您所给出的代码将工作。
问题应该是您想要访问的列的名称。再检查一遍
这是在回显中的引号…你在两个例子中都使用了双引号,这将打断字符串(它不应该,因为你已经用花括号包装了它,但仍然…)。
试题:
echo"<li>{$Row['menu_name']}</li>";
如果这不起作用-确保你从数据库中获取一个关联数组;您可能需要将常量MYSQL_ASSOC
或MYSQL_BOTH
传递给查询(尽管默认情况下应该使用MYSQL_BOTH
)。
$Row=mysql_fetch_array($SubjectSet, MYSQL_ASSOC)
你可以试着用单引号代替:
$SubjectSet=mysql_query("select * from subjects",$Connection);
while($Row=mysql_fetch_assoc($SubjectSet))
{
echo"<li>{$Row['menu_name']}</li>";// line 17
}
更正:
只是注意到你没有使用关联抓取。如果希望使用列的名称访问列,请使用mysql_fetch_assoc()
方法。
你试过了吗?
$SubjectSet=mysql_query("select * from subjects",$Connection);
while($Row=mysql_fetch_array($SubjectSet)) {
echo"<li>".$Row["menu_name"]."</li>";
}
:)使用MYSQL_ASSOC
与mysql_fetch_array()
或使用mysql_fetch_assoc()
代替:
while($Row=mysql_fetch_array($SubjectSet, MYSQL_ASSOC))
或
while($Row=mysql_fetch_assoc($SubjectSet))
你可以读这个。我已经尽量简短地告诉你了!