SQL行数组字段可以用整数索引访问,但不能用字符串索引访问


SQL Row array field can be reached with integer index but not with string index

当我尝试使用字符串

引用索引时,我得到错误

错误:

注意:第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_ASSOCMYSQL_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_ASSOCmysql_fetch_array()或使用mysql_fetch_assoc()代替:

while($Row=mysql_fetch_array($SubjectSet, MYSQL_ASSOC))

while($Row=mysql_fetch_assoc($SubjectSet))

你可以读这个。我已经尽量简短地告诉你了!