2015-01-14 59 views
1

我已經在網上搜索了這個衆所周知的問題的解決方案,但所有這些似乎都是由於沒有安裝mysql驅動程序而導致的。我檢查了我自己,我安裝了MySQL,所以我不知道是什麼原因導致了這個問題。 我的代碼:異常'PDOException'帶消息'找不到驅動程序'

<?php 

try 
{ 
    $db = new PDO('myqsl:host=localhost, dbname=stagepeer', 'root', 'root'); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

    $sql = $db->prepare("INSERT INTO werknemers (naam, achternaam, wachtwoord, telefoonnummer, plaatsnaam, email) VALUES(:naam, :achternaam, :wachtwoord, :telefoonnnummer, :plaatsnaam, :email)"); 
    $sql->execute(array(":naam"=>$voornaam, ":achternaam"=>$achternaam, ":wachtwoord"=>$wachtwoord, ":telefoonnummer"=>$telefoonnummer, ":plaatsnaam"=>$plaatsnaam, ":email"=>$email)); 


if (empty($_POST['voornaam'])) 
{ 
    echo "Voornaam ontbreekt" . "<br>"; 
} 
else 
{ 
    $voornaam = $_POST['voornaam']; 
} 
if (empty($_POST['achternaam'])) 
{ 
    echo "Achternaam ontbreekt" . "<br>"; 
} 
else 
{ 
    $achternaam = $_POST['achternaam']; 
} 
if (empty($_POST['plaatsnaam'])) 
{ 
    echo "Plaatsnaam ontbreekt" . "<br>"; 
} 
else 
{ 
    $plaatsnaam = $_POST['plaatsnaam']; 
} 
if (empty($_POST['gebruikersnaam'])) 
{ 
    echo "Email ontbreekt" . "<br>"; 
} 
else 
{ 
    $email = $_POST['gebruikersnaam']; 
} 
if (empty($_POST['telefoon'])) 
{ 
    echo "Telefoonnummer ontbreekt" . "<br>"; 
} 
else 
{ 
    $telefoon = $_POST['telefoon']; 
} 
if (empty($_POST['wachtwoord'])) 
{ 
    echo "Wachtwoord ontbreekt" . "<br>"; 
} 
else 
{ 
    $wachtwoord = $_POST['wachtwoord']; 
} 

} 
catch(PDOException $ex) 
{ 
    echo $ex . "error"; 
} 
?> 

這是完全錯誤

exception 'PDOException' with message 'could not find driver' in /Applications/MAMP/htdocs/Vacaturesite/registratie.php:5 Stack trace: #0 /Applications/MAMP/htdocs/Vacaturesite/registratie.php(5): PDO->__construct('myqsl:host=loca...', 'root', 'root') #1 {main}error 
+2

昂貴的錯字:'myqsl:'!='mysql'和dsn分隔符都是';' – Ghost

+0

我更改了分隔符但沒有改變任何內容 –

+0

運行安裝程序(對於PHP,不僅僅是MySQL服務器)在PHP組件列表中安裝了PDO的mysql部分。 – developerwjk

回答

1

這是一個簡單的錯誤,我看到你在固定的驅動程序錯誤。 但是你分配變量之前運行查詢,他們在這一點上未定義:

  • 你應該調整你的代碼驗證之後查詢不 相反
  • 使用isset()
  • 避免不必要的變數

<?php 
if (isset($_POST['voornaam'], $_POST['achternaam'], $_POST['plaatsnaam'], $_POST['gebruikersnaam'], $_POST['telefoon'], $_POST['wachtwoord'])) 
{ 
$params = array(":naam"=>$_POST['voornaam'], 
       ":achternaam"=>$_POST['achternaam'], 
       ":wachtwoord"=>$_POST['plaatsnaam'], 
       ":telefoonnummer"=>$_POST['gebruikersnaam'], 
       ":plaatsnaam"=>$_POST['telefoon'], 
       ":email"=>$_POST['wachtwoord']) 

    try 
    { 
     $db = new PDO('myqsl:host=localhost, dbname=stagepeer', 'root', 'root'); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

     $sql = $db->prepare("INSERT INTO werknemers (naam, achternaam, wachtwoord, telefoonnummer, plaatsnaam, email) VALUES(:naam, :achternaam, :wachtwoord, :telefoonnnummer, :plaatsnaam, :email)"); 
     $sql->execute($params); 
    }catch(PDOException $ex) 
    { 
     echo $ex . "error"; 
    } 
}else{ 
    echo "Fields ontbreekt" . "<br>"; 
} 
?> 
相關問題