2015-04-12 38 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

相關問題