异常' PDOException'有消息'无法找到驱动程序'

时间:2015-01-14 15:35:11

标签: php html mysql html5 pdo

我已经在网上搜索了这个众所周知的问题的解决方案,但所有这些似乎都是由于未安装mysql驱动程序引起的。我检查了自己,我安装了mysql,所以我不知道导致这个问题的原因。 我的代码:

<?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

1 个答案:

答案 0 :(得分: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>";
}
?>