PHP / PDO"注意:未定义的变量"但它在同一个文件中

时间:2017-02-11 09:23:22

标签: php html sql pdo

容器和变量" sresult"这在某种程度上是未定义的。但我不明白为什么,我认为可以将变量传递给另一个Div-Container。

这是我的拳头Div-Container:

<div id = "header">
    <h1>User-Search</h1>
    <?php if(!empty($user)): ?>
    <?php

    echo'<form action="search.php" method="POST">
    <input type="text" placeholder="User Search" name="search_user">
    <input type="submit">
    </form>';

    if(!empty ($_POST['search_user'])):

    $search_user = "SELECT username FROM users WHERE username like :search_user";
    $edited_search_user = "%".$_POST['search_user']."%";
    $suser = $conn->prepare($search_user);
    $suser->bindParam(':search_user', $edited_search_user);
    $suser->execute();
    $sresult = $suser->fetchAll(); 

    ?>
         <?php endif; ?>
        <?php endif; ?>
    </div>

这是我的第二个:

<div id = "textarea">
    <?php
    if(count($sresult)> 0)
    {
        foreach ($sresult as $srow)
        {
            echo'<table>';
            echo'<th>Username : </th>';
            echo'<td>'.$srow["username"].'</td';
            echo'</table>';
        }    

    }
        else {
            echo 'No User found !';
             }

    ?>

    </div>

我试图将所有东西放在一个Div-Container中,但即使在那里它也没有用。

1 个答案:

答案 0 :(得分:0)

变量$sresult在您提交表单时由于!empty ($_POST['search_user'])而定义为 ,因此您应该先检查$sresult是否存在,然后再对其进行操作。这可以通过empty()

完成
<div id = "textarea">
<?php
if(!empty($sresult) > 0)
{
    foreach ($sresult as $srow)
    {
        echo'<table>';
        echo'<th>Username : </th>';
        echo'<td>'.$srow["username"].'</td';
        echo'</table>';
    }    

}
else {
    echo 'No User found !';
}?>
</div>

函数count不起作用,因为它只检查变量中元素的大小/数量,而不检查它是否存在。这就是原因 - 使用empty