簡體   English   中英

使用PDO Query重置服務器

[英]Using PDO Query reset my server

我的網站有些麻煩。 它可以在localhost上完美運行,但是從昨天開始,我試圖將其放在Windows 2003服務器上。 (使用Apache 2.2.11,mysql 5.1.31,php 5.2.8)。

我的問題是,當我嘗試使用網站的身份驗證頁面時,服務器重置。

僅當我調用PDO-> query函數時才會重置(以使用戶訪問我的數據庫)

我的查詢代碼:

function getUser($login)
{
    try{
        $bdd = connectDB();

        $requete = $bdd->query('SELECT * FROM `utilisateur` WHERE `Login` = \''.$login.'\'');

        $user = new Utilisateur();

        if($donnees = $requete->fetch())
        {
            $user->setLogin($donnees['Login']);
            $user->setAuth($donnees['Role']);
            $user->setTrigramme($donnees['Trigramme']);
        }

        $requete->closeCursor();

        disconnectDB($bdd);
        return $user;
    }catch(Exception $e){
        error_log('Exception : 
                '.$e, 3, ADR_ERROR_LOG);
    }
}

線路:ConnectDb可以正常工作,但是當它到達網絡線路時,導航器(我已經嘗試過IE,Chrome和Firefox)等待了很長時間,並說“與服務器的Connexion已被重置”,而且我沒有任何錯誤錯誤日志上的消息:(

提前致謝

編輯:我已經嘗試過這樣,但仍然有相同的問題:

function getUser($login)
{
    try{
        $bdd = connectDB();

        $requete = $bdd->prepare('SELECT * FROM `utilisateur` WHERE `Login` = :login');

// $ requete = $ bdd-> query('SELECT * FROM utilisateur WHERE Login = \\''。$ login。'\\'');

        $requete->bindValue('login', $login, PDO::PARAM_STR);
        $requete->execute();

        $user = new Utilisateur();

        if($donnees = $requete->fetch())
        {
            $user->setLogin($donnees['Login']);
            $user->setAuth($donnees['Role']);
            $user->setTrigramme($donnees['Trigramme']);
        }

        $requete->closeCursor();

        disconnectDB($bdd);
        return $user;
    }catch(Exception $e){
        error_log('Exception : 
                '.$e, 3, ADR_ERROR_LOG);
    }
}

編輯2與此作品:但為什么?

$db = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

    mysql_select_db(DB_NAME,$db);

    $sql = 'SELECT * FROM `utilisateur` WHERE `Login` = \''.$login.'\'';

    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

    $user = new Utilisateur();

    while($donnees = mysql_fetch_assoc($req))
    {
        $user->setLogin($donnees['Login']);
        $user->setAuth($donnees['Role']);
        $user->setTrigramme($donnees['Trigramme']);
    }

    mysql_close();
    return $user;

最后,我使用mysqli_來做我想做的事,並且效果很好。

如果有人對這個問題有解決方案,他可以提出以幫助下一個人。

感謝具有搜索解決方案的人員。

我認為您的代碼中剛輸入錯字。 使用PDO,錯字可以決定您的命運,讓您撓頭一分鍾。 查看您的准備查詢。 綁定登錄參數時,您從未在登錄前指定:。

看這部分:

$requete->bindValue('login', $login, PDO::PARAM_STR);

因此,“登錄”應為“:login”。 只是為了將來參考,您不必使用PDO :: PARAM_STR,因為綁定到查詢的任何參數都會自動處理為字符串。 如果要綁定數字值,則需要將數據類型設置為PDO :: PARAM_INT。

PDO可能很棘手-特別是在輸入錯誤和錯誤時。

長話短說,我認為參數命名問題是您所有的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM