2015-04-12 112 views
1

我试图做使用PHP警告:非法字符串偏移'todo'| PHP

待办事项列表,但我得到这个错误警告:非法串偏移“待办事项”

$userhastodo = ""; 

$toDo_Query = "SELECT * FROM `todo` WHERE `for`='".$_SESSION['id']."'"; 

$toDo_run_query = mysqli_query($link , $toDo_Query); 

$toDo_num_rows = mysqli_num_rows($toDo_run_query); 


if($toDo_num_rows >= 1){ 
    $toDo_get_info = mysqli_fetch_array($toDo_run_query); 

    $toDo_info = $toDo_get_info; 

    foreach($toDo_info as $info){ 
     echo $info['todo']; 

    } 
} 
else{ 
    $userhastodo = "You have no lists here :(!"; 
} 

这是在我的todo.php

页面顶部

在HTML部分

 <?php if(empty($toDo_get_info)):?> 
      <div class="empty"> 
       <i class="fa fa-meh-o fa-5x"></i> 
       <h3>Strange, no lists found!</h3> 
      </div> 

      <?php else: ?> 
       <ul class="list"> 
       <?php foreach($toDo_info as $info_in_toDo):?> 
        <li><span><?php echo $info_in_toDo['todo']?></span></li> 
       <?php endforeach;?> 
       </ul> 
     <?php endif;?> 

我是如何解决这一问题?它不断警告我=>警告:非法串偏移“待办事项”

待办事项存在于我的MySQL数据库持有待完成活动的数据

+0

没有todo'有UR数据库表'名为'todo'的字段?尝试var_dump($ info);获取更多关于你的数组的信息$ info –

+0

todo是你的表名还是你的表名? – Saty

+0

我的列名在表内 – SR11

回答

0

如果你看这个部分:

$toDo_get_info = mysqli_fetch_array($toDo_run_query); 

$toDo_info = $toDo_get_info; 

foreach($toDo_info as $info){ 
    echo $info['todo']; 
} 

您会看到从结果集中获得一行,因此$toDo_info是包含一个完整行的一维数组。

您将循环播放该行并显示foreach,这样您将从该行获取所有值,这些值是字符串,而不是数组。

你只需要:

echo $toDo_get_info['todo']; 

编辑:要得到所有行和回声的所有项目,你需要获取的所有行:

while ($toDo_get_info = mysqli_fetch_array($toDo_run_query)) 
{ 
    // add your html to add list items here as well 
    echo $toDo_get_info['todo']; 
} 
+0

我想获得表中的所有todo列时我循环,我不想要一个元素,我该怎么做? – SR11

+0

@ SR11使用循环获取所有行,请参阅我的编辑。 – jeroen

+0

谢谢,但有没有使用foreach的方法?我在关注如何做待办事项列表的phpacdemy系列,但他用foreach – SR11

0

尝试改变这种

foreach($toDo_info as $key => $info){ 
    echo $info; 
} 

更好的看到@吉荣的回答...

+0

它的工作原理,但我想循环所有待办事项列在我的表中,并打印它们 此解决方案将打印循环中的第一行 – SR11