php - 异常 'PDOException' 消息 'could not find driver'

标签 php mysql html 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

最佳答案

这是一个简单的错误,我看到您修复了驱动程序错误。 但是,您在分配变量之前运行了查询,此时它们是未定义的:

  • 您应该调整您的代码以在验证后进行查询,而不是 对面
  • 使用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>";
}
?>

关于php - 异常 'PDOException' 消息 'could not find driver',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946656/

相关文章:

mysql - 如何从逗号分隔值字段中获取唯一值?

mysql - MySQL 中何时使用单引号、双引号和反引号

javascript - 数据没有进入 MySql 数据库

php - wamp 更新 php 到 7.2.2 版本不起作用

php - 关于我的数据库 MySQL 和 Android Studio 的问题

php - 如何避免日期和凭证号码重复?

php - 如何使用 PHP 和 PDO 获取整数和文本以自动换行

html - 在悬停时在 div 内显示文本在 css 中不起作用

javascript - 在 div 中翻转动画不隐藏 Canvas 。预期行为是隐藏 Canvas

php - 在 PHPUnit 测试执行期间隐藏输出