0

经过几天的反复试验,我终于用 PDO 替换了我的标准 mysql 代码。除了应用程序需要将用户(姓名、电子邮件和注册时间)插入数据库的最后一部分之外,一切似乎都运行良好。点击提交后,页面变为空白。

我看不出代码有什么问题,所以如果你能帮助我,我将不胜感激。

<?php

////Database connection values
$dsn = 'mysql:host=host; dbname=name; charset=utf8';
$db_user = 'username';
$db_pass = 'password';

//Database connection
$db = new PDO($dsn, $db_user, $db_pass); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Enable Exception error mode
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // Use PDO safely = Turn off prepare emulation

// Databse connection check
if($db){
 print "connected to the db " . "<br />";
 }

//Declare values
$name = "";
$email = "";
$userMsg = "";


if ($_POST['name'] != "") {


    $name = $_POST['name'];
    $email = $_POST['email'];

//MySQL SELECT Query    
    $stmt = $db -> prepare ("SELECT * FROM newsletter WHERE email=?");
    $stmt-> bindValue(1, $email);
    $stmt -> execute ();


//Error - No email  
    if (!$email) {

        $userMsg  = '<br /><br /><h4><font color="FF0000">Please type an email address ' . $name . '.</font></h4>';

        } // End email-input check

//Error - Email already in the system       
    else if ($stmt -> rowCount() > 0) {

        $userMsg  = '<br /><br /><h4><font color="FF0000">' . $email . ' is already in the system.</font></h4>';

        } // End Row check

//OK - insert user into database        
     else {

        $insert = $db -> prepare ("INSERT INTO newsletter (name, email, dateTime) VALUES(:name, :email, ,NOW())");
        $insert -> execute(array(':name' => $name, ':email' => $email));                                            

        //Success! - Notify user
        $userMsg  = '<br /><br /><h4><font color="0066FF">Thanks ' . $name . ', you have been added successfully.</font></h4>';

        $name = "";
        $email = "";

            } // End INSERT


}

?>
4

1 回答 1

1
VALUES(:name, :email, ,NOW())"                            

应该

VALUES(:name, :email, NOW())"
于 2013-08-05T16:20:09.397 回答