2014-01-15 118 views
0

我正在从MYSQL切换到PDO,并且在我的表单上它不会将表单数据插入到数据库中。奇怪的是,它不会抛出任何错误,而是在不插入数据的情况下重定向到成功页面。这里是我的代码: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'); 

} 


?> 
+0

您可能需要通过对'$ loan_amount您的数据库连接作为参数=修剪($ _ POST [ 'loan_amount']);'和所有其他人。 I.e .:'$ loan_amount = trim($ pdo,$ _POST ['loan_amount']);'然后为所有其他人做。但是,对于PDO,我不是100%确定的,无论它是否自动执行此操作。 –

+0

你可以验证你的表不仅允许独特的插入? – Shawn

+0

抛出这个错误:警告:trim()期望参数1是字符串,对象在... – tonjaggart

回答

2

的问题是与语法:

$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); 

OR

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