1

将我的网站从我的计算机传输到 1and1 服务器后出现此错误。

我也收到以下错误,但我不确定它是否直接相关:

致命错误:在第 29 行的 /homepages/37/d153694643/htdocs/sites/mjbox/func/functions.php 中的非对象上调用成员函数 prepare()

我在单独的文件中测试了与我的 1 和 1 服务器的连接,并且没有错误。

这是我的大部分 index.php

//Check if the user is logged in
loggedin();

//Check if the submit button has been clicked first
if ( isset( $_POST['submit'] ) ){

    //Check if user exists on database
    match_login($_POST['username'],$_POST['password']);
}

// Retrieve all active posts order by lastest first
$resultarray = retrieve_active_posts();

echo '<div id="content-wrap">';
foreach($resultarray AS $value){
    $filename = substr($value['img_file_name'],9);
    $cat_id = $value['cat_id'];
    echo '<article class="post">';
    echo '<div class="post_title">' . $value['post_title'] . '</div>';
    echo '<div class="post_info">' . 
    'Category: ' . $cat_name = get_cat_name($cat_id) .'<br />'. 
    'Year: ' . $value['post_year'] .'<br />'. 
    $value['post_desc'] .'<br />'. 
    '</div>';
    echo '<div class="link-to-post"><a href="#">Click to view</a></div>';
    echo '<a href="#'.$value['post_id'].'" class="linktopost"><img class="post-thumb" src="img/thumb_/'.$filename.'" alt="MJbox Michael Jackson memorabilia thumbnail" data-postid="'.$value['post_id'].'"/></a>';
    echo '<a href="#'.$value['post_id'].'" class="linktopost"><img class="cover-img" src="img/post-bg-1.png" alt="test" data-postid="'.$value['post_id'].'"/></a>';
    echo '</article>';

}
echo '</div>';

和我的一些functions.php文件,包括第29行:

//Check if user is logged in
    function loggedin(){
        //Check if the loggedin status is set to true, meaning that user is logged in.
        if ( isset ( $_SESSION['loggedin'] ) && $_SESSION['loggedin'] == true  ) {
            return true;
        }else{

            return false;
        }

    }

    //Check users login details
    function match_login($username, $password){
        //If the button has been clicked get the variables
        //test the connection
            try{
                //connect to the database
                $dbh = new PDO("mysql:host=correct;dbname=correct","correct", "correct");
            //if there is an error catch it here
            } catch( PDOException $e ) {
                //display the error
                echo $e->getMessage();

            }
        //select any username and password that match 
        $stmt = $dbh->prepare("SELECT * FROM mjbox_users WHERE username=? AND password=?");
        $stmt->bindParam(1, $username);
        $stmt->bindParam(2, $password);

        //execute the select statement, put in if statement to provide error if false!?
        if( $stmt->execute() ){
            //count how many rows are found
            $numrows = $stmt->rowCount();
            //if there is a match continue
            if( $numrows > 0 ){
                $_SESSION['loggedin'] = true;
                $_SESSION['username'] = $username;
                header( 'Location: index.php' ) ;
                echo 'yes';
            }
        }
        $dbh = null;
    }

    //logout
    function logout(){
        $_SESSION = array();    
        session_destroy();
        header( 'Location: index.php' ) ;

    }

这是第 29 行:

$stmt = $dbh->prepare("SELECT * FROM mjbox_users WHERE username=? AND password=?");

什么可能导致连接失败和致命错误?

4

1 回答 1

0

老实说,我会返回一个页面,不包含以下内容。

try {
    //connect to the database
    $dbh = new PDO("mysql:host=correct;dbname=correct", "correct", "correct");
    //if there is an error catch it here
} catch( PDOException $e ) {
    //display the error
    echo $e->getMessage();

}
$result = $dbh->query("show tables");
while ($row = $result->fetch(PDO::FETCH_NUM)) {
    print_r($row[0]);
}

这似乎是连接字符串的问题,但这应该可以肯定地消除它。

于 2012-06-13T15:59:07.290 回答