Php PDO插件不';t抛出错误或插入表单数据

Php PDO插件不';t抛出错误或插入表单数据,php,mysql,pdo,Php,Mysql,Pdo,我正在从MYSQL切换到PDO,在我的表单上,它不会将表单数据插入数据库。奇怪的是,它没有抛出任何错误,而是在不插入数据的情况下重定向到成功页面。这是我的密码: <?php session_start(); /*** mysql hostname ***/ $hostname = 'XXXXXXX.hostedresource.com'; /*** mysql username ***/ $username = 'XXXXXX'; /*** mysql password **

我正在从MYSQL切换到PDO,在我的表单上,它不会将表单数据插入数据库。奇怪的是,它没有抛出任何错误,而是在不插入数据的情况下重定向到成功页面。这是我的密码:

    <?php
session_start();

/*** mysql hostname ***/
$hostname = 'XXXXXXX.hostedresource.com';

/*** mysql username ***/
$username = 'XXXXXX';

/*** mysql password ***/
$password = 'XXXXXXXX';

try {
    $pdo = new PDO("mysql:host=$hostname;dbname=XXXXXX;charset=utf8", $username, $password);
      array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);

    /*** echo a message saying we have connected ***/
    //echo 'Connected to database';
  }

    catch(PDOException $e)
    {
    echo $e->getMessage();
    }

$loan_amount = trim($_POST['loan_amount']);
$loan_type = trim($_POST['loan_type']);
$debt_amount = trim($_POST['debt_amount']);
$first_name = trim($_POST['first_name']);
$last_name = trim($_POST['last_name']);    
$email = trim($_POST['email']);
$phone = trim($_POST['phone']);
$zip = trim($_POST['zip']);


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 try {
   $sql="INSERT INTO leads (loan_amount, loan_type, debt_amount, first_name, last_name, email, phone, zip, reg_date) VALUES (:loan_amount, :loan_type, :debt_amount, :first_name, :last_name, :email, :phone, :zip,  NOW())";
   $statement = $pdo->prepare($sql);
   $statement->bindValue(':loan_amount', $loan_amount);
   $statement->bindValue(':loan_type', $loan_type);
   $statement->bindValue(':debt_amount', $debt_amount);
   $statement->bindValue(':first_name', $first_name);
   $statement->bindValue(':last_name', $last_name);
   $statement->bindValue(':email', $email);
   $statement->bindValue(':phone', $phone);
   $statement->bindValue(':zip', $zip);
   $statement->execute(); 

  }

    catch(PDOException $e)
    {
    echo $e->getMessage();
    exit();
    }

   header('Location: /success.php'); 

}


?>

问题在于语法:

$pdo = new PDO("mysql:host=$hostname;dbname=XXXXXX;charset=utf8", $username, $password);
array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
在构造函数的末尾有一个右括号和分号,这会破坏代码。您需要:

$pdo = new PDO("mysql:host=$hostname;dbname=XXXXXX;charset=utf8", $username, $password,
array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);


您可能需要将DB连接作为参数传递给
$loan\u amount=trim($\u POST['loan\u amount'])和所有其他。即:
$loan\u amount=trim($pdo,$\u POST['loan\u amount'])然后对所有其他的代码执行此操作。然而,我不是100%确定,当涉及到PDO时,它是否会自动完成。弗雷德:WTF?trim只修剪
$password='XXXXXXXX中stringsTypo的空白。缺少关闭
@Fred hrm。。。的确如此。无论如何,至少根据我认为是php参考的php.net,trim()是否与作为参数传递PDO对象有关
string trim(string$str[,string$charlist=“\t\n\r\0\x0B”])
$pdo在这里完全没有什么关系…@tonjaggart这意味着它“工作”,至少在sql错误方面是这样。虽然我确实看到了一些我认为不起作用的东西。。。数组(PDO::ATTR\U仿真\U准备=>false,PDO::ATTR\U ERRMODE=>PDO::ERRMODE\U异常)。。。应该是$pdo>setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_EXCEPTION);这行代码看起来像是php错误的结果?
$pdo = new PDO("mysql:host=$hostname;dbname=XXXXXX;charset=utf8", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);