PHP功能显示空白屏幕?

时间:2014-04-07 14:52:40

标签: php html mysql

我正在复制youtube视频教程以进行私人消息传递。本教程的其余部分工作正常,但只要我将此功能添加到我的网站,我的整个网站都会显示空白,并且没有显示任何内容?没有错误或任何东西,只是一个白色的屏幕?我在这里做错了吗?这是功能:

    <?php
function fetch_user_ids($usernames){
    foreach ($usernames as &$name){
        $name = mysql_real_escape_string($name);
    }

    $result = mysql_query("SELECT `userid`, `username` FROM `users` WHERE `username` IN ('" . implode("', '", $usernames) . "')");
    $names = array();

    while (($row = mysql_fetch_assoc($result)) !== false){
        $names[$row['username']] = $row['userid'];
    }

    return $names;
}
?>

以下是发送信息的脚本:

<?php
if (isset($_POST['to'], $_POST['subject'], $_POST['body'])){
    $errors = array();

    if (empty($_POST['to'])){
        $errors[] = 'You must enter atleast one name.';
    }else if (preg_match('#^[a-z, ]+$#i', $_POST['to']) === 0){
        $errors[] = 'The list of names you gave does not look valid.';
    }else{
        $usernames = explode(',', $_POST['to']);

        foreach ($usernames as &$name){
            $name = trim($name);
        }

        $user_ids = fetch_user_ids($usernames);

        if (count($user_ids) !== count($usernames)){
            $errors[] = 'The following users could not be found: ' . implode(', ', array_diff($usernames, array_keys($user_ids)));
        }
    }

    if (empty($_POST['subject'])){
        $errors[] = 'The subject cannot be empty';
    }

    if (empty($_POST['body'])){
        $errors[] = 'You body must have some text!';
    }

    if (empty($errors)){
    //Send message
    }
}

if (isset($errors)){
    if (empty($errors)){
        echo '<div class="msg success">Your message has been sent ! <a href="index.php"> return</a></div>';
    }else{
    foreach ($errors as $error){
        echo '<div class="msg error">', $error, '</div>';
    }
  }
}

?>



<form action="" method="POST">
<div>
<label for="to">To</label>
<input type="text" name="to" id="to" />
</div>
<div>
<label for="subject">Subject</label>
<input type="text" name="subject" id="subject" />
</div>
<div>
<textarea name="body" rows="10" cols="110"></textarea>
</div>
<div>
<input type="submit" value="send" />
</div>
</form>

如果我带走&#34;功能&#34;部分,我可以打印数据,所以它必须与功能元素有关?

2 个答案:

答案 0 :(得分:0)

我建议将!==更改为!=并查看是否有效,可能会解释它有一个数字而不是一个bool

答案 1 :(得分:0)

让它变得更简单。在foreach, get rid of &$name内,并将其替换为$name。还要检查数据库是否没有返回任何内容。

foreach ($usernames as $name){
        $name = mysql_real_escape_string($name);
    }

 $result = mysql_query("SELECT `userid`, `username` FROM `users` WHERE `username` IN ('" . implode("', '", $usernames) . "')");
 // Check if the query itself is failing or not here:
 if(!$result) die("Failed to perform query");
 $names = array();
 // Check if the database is returning any rows or not:
 print_r(mysql_num_rows($result));
 while($row = mysql_fetch_assoc($result)){

         $names[$row['username']] = $row['userid'];

}


    return $names;