致命错误:在null(Register.PHP)上调用成员函数prepare()

致命错误:在null(Register.PHP)上调用成员函数prepare(),php,web,Php,Web,所以我对网站建设不感兴趣。但是我从我的一个朋友那里得到了一个个人网站的源代码,我试图把所有的东西都放在一起,在Register.Php文件中,我有一个问题,它说了一个致命的错误:调用成员函数prepare on null我的代码是 <?php if (isset($_POST['registerBtn'])) { if (empty($_POST['password'])) { echo '<div class="alert alert-error">

所以我对网站建设不感兴趣。但是我从我的一个朋友那里得到了一个个人网站的源代码,我试图把所有的东西都放在一起,在Register.Php文件中,我有一个问题,它说了一个致命的错误:调用成员函数prepare on null我的代码是

<?php
if (isset($_POST['registerBtn']))
{

    if (empty($_POST['password']))
    {
    echo '<div class="alert alert-error"><center><p><font     color=\'black\'>Please Choose A Password</font></p></center></div>';
    }else

    $secure = isset($_POST['secure']) ? strtolower($_POST['Username']) : '';
    if ($secure == $_SESSION['username']) {
    unset($_SESSION['username']);


    $username = $_POST['username'];
    $password = $_POST['password'];
    $email = $_POST['email'];
    $checkUsername = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE     `username` = :username");
    $checkUsername -> execute(array(':username' => $username));
    $countUsername = $checkUsername -> fetchColumn(0);
    $checkEmail = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE     `email` = :email");
        $checkEmail -> execute(array(':email' => $email));
        $countEmail = $checkEmail -> fetchColumn(0);
        if ($countEmail > 0)
        {
            echo '<div class="alert alert-error"><p><font color=\'black\'>    <center>Email Already In Use</center></font></p></div>';
        }
        else
    {
    if (empty($username) || empty($password) || empty($email))
    {
            echo '<div class="alert alert-error"><center><p><font color=\'black\'>Fill In All Fields</font></p></center></div>';
    }
    else
    {
        if (!ctype_alnum($username) || strlen($username) < 4 ||     strlen($username) > 15)
        {
echo '<div class="alert alert-error"><center><p><font color=\'black\'>Fill     in all fields!</font></p></center></div>';
echo '<div class="alert alert-error"><center><p><font color=\'black\'>Please     choose a username between 4-5 characters.</font></p></center></div>';
        }
        else
        {
            if (!($countUsername == 0))
            {
echo '<div class="alert alert-error"><center><p><font     color=\'black\'>Username Taken.</font></p></center></div>';
            }
            else
            {
                if (!filter_var($email, FILTER_VALIDATE_EMAIL))
                {
echo '<div class="alert alert-error"><center><p><font     color=\'black\'>Invalid email address.</font></p></center></div>';
                }
                else
                {
                        $insertUser = $odb -> prepare("INSERT INTO `users`     VALUES(NULL, :username, :password, :email, 0, 0, 0, 0)");
                        $insertUser -> execute(array(':username' =>     $username, ':password' => SHA1($password), ':email' => $email));
$ip = getRealIpAddr();
$SQL = $odb -> prepare('INSERT INTO `registerlogs` VALUES(:username, :ip,     UNIX_TIMESTAMP(), "")');
$SQL -> execute(array(':ip' => $ip, ':username' => $username));

    //change this to your email.
 $name3 = $odb -> query("SELECT `sitename` FROM `SiteConfig` LIMIT 1") ->     fetchColumn(0);
 $name2 = $odb -> query("SELECT `header` FROM `forgotconfig` LIMIT 1") ->     fetchColumn(0);
    $subject1 = $odb -> query("SELECT `Subject` FROM `forgotconfig` LIMIT 1") -> fetchColumn(0);
$subject = "Welcome To $name2";
$name1 = $odb -> query("SELECT `email` FROM `forgotconfig` LIMIT 1") ->     fetchColumn(0);


  $to   = "huzoorbux@gmail.com";
  $from = $odb -> query("SELECT `email` FROM `forgotconfig` LIMIT 1") ->     fetchColumn(0);

  $headers = "From: " . strip_tags($from) . "\r\n";
  $headers .= "Reply-To: ". strip_tags($from) . "\r\n";
  $headers .= "CC: $name1\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message = '<html><body>';

$message .= '<table width="100%"; rules="all" style="border:1px solid #3A5896;" cellpadding="10">';

$message .= "<tr><td><img src='/horizon.png' alt='Feive Stress' /></td></tr>";

$message .= "<tr><td colspan=2>Thank you for signing up with us. Your new     account has been setup and you can now login to our client area using the      details below.
Your details are as follows: 
<br>
<br>
Username: $username
<br>
Email: $email
<br>
Password: ************* 
<br>
<br>
To login, visit $name3
<br>
<br>
Thank you for choosing $name2! 
<br>
<br>
This is an automated response, please do not reply!</td></tr>";


$message .= "<tr><td colspan=2 font='colr:#999999;'><I>$name3<br>Registered     from IP: $ip</I></td></tr>";

$message .= "</table>";

$message .= "</body></html>";

    // now lets send the email.
mail($email, $subject, $message, $headers);


echo '<div class="alert alert-success"><center><p><font     color=\'black\'>Registered Successfully. Check Your Email Address.     Redirecting....</font></p></center></div><meta http-equiv="refresh"     content="3;url=login.php">';
}
}
}
}
}
}
}
?>
$odb为空

您必须创建到数据库的连接

$odb = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$odb为空

您必须创建到数据库的连接

$odb = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

像这个问题一样愚蠢的是,在使用“$odb->prepare”之前,我应该把这行代码放在什么位置?$username=$_POST['username'];$password=$_POST['password'];$email=$_POST['email'];$odb=new-pdomsql:host=$localhost;dbname=$Feives\u Feives,$username,$password;$checkUsername=$odb->prepareSELECT COUNT FROM username=:username的用户;$checkUsername->executearray':username'=>$username;$countUsername=$checkUsername->fetchColumn0;$checkEmail=$odb->prepareSELECT COUNT FROM致命错误:未捕获异常'PDOException',消息'SQLSTATE[28000][1045]用户'David'@'localhost'使用/home3/feives/public_html/register.php:58堆栈跟踪:0/home3/feives/public_html/register.php58:PDO->\u构造'mysql:host=';dbn…“,”David“,”Test“1{main}在第58行的/home3/feives/public_html/register.php中抛出,每次我试图注册任何关于它的帮助时都会出现这个错误?这个问题很愚蠢,我应该把那行代码放在什么之间?在使用“$odb->像这样准备”之前?$username=$_POST['username'];$password=$_POST['password'];$email=$_POST['email'];$odb=new-pdomsql:host=$localhost;dbname=$Feives\u Feives,$username,$password;$checkUsername=$odb->prepareSELECT COUNT FROM username=:username的用户;$checkUsername->executearray':username'=>$username;$countUsername=$checkUsername->fetchColumn0;$checkEmail=$odb->prepareSELECT COUNT FROM致命错误:未捕获异常'PDOException',消息'SQLSTATE[28000][1045]用户'David'@'localhost'使用/home3/feives/public_html/register.php:58堆栈跟踪:0/home3/feives/public_html/register.php58:PDO->\u构造'mysql:host=';dbn…'、'David'、'Test'1{main}在第58行的/home3/feives/public_html/register.php中抛出,每次我尝试注册任何帮助时都会返回该错误?您的$odb变量未实例化。我认为您缺少了一些include标记。您的$odb变量未实例化。我想你少了一些包含标签