2015-01-14 3 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), убедитесь, что вы имеет часть mysql PDO, установленную в списке компонентов PHP. – 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>"; 
} 
?> 
Смежные вопросы