警告:非法字符串偏移' todo' | PHP

时间:2015-04-12 16:57:00

标签: php mysql arrays

尝试使用PHP执行待办事项列表

但是收到此错误警告:非法字符串偏移' todo'

$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;?>

我该如何解决这个问题?它一直警告我=&gt;警告:非法字符串偏移&#39; todo&#39;

todo存在于我的mysql数据库中,其中包含待办事项的数据

2 个答案:

答案 0 :(得分:0)

尝试更改为

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

更好的是看@ jeroen的答案......

答案 1 :(得分: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'];
}