SQL Row数组字段可以使用整数索引到达,但不能使用字符串索引

时间:2011-10-07 11:04:15

标签: mysql php

当我尝试使用字符串

引用索引时,我收到错误

错误:

  

注意:未定义的索引:第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数据库设置的问题吗?

6 个答案:

答案 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_ASSOCMYSQL_BOTH传递给查询(但默认情况下,它应使用MYSQL_BOTH)。

$Row=mysql_fetch_array($SubjectSet, MYSQL_ASSOC)

答案 5 :(得分:0)

:)将MYSQL_ASSOCmysql_fetch_array()一起使用或改为使用mysql_fetch_assoc()

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

while($Row=mysql_fetch_assoc($SubjectSet))

您可以阅读this。我试着尽可能缩短你的时间!