PDO、PHP和MySQL

PDO、PHP和MySQL,php,mysql,pdo,Php,Mysql,Pdo,谁能告诉我我做错了什么? 我是PDO新手,需要学习如何使用bindValue插入,但当我点击submit时,数据库中没有添加任何内容。甚至没有显示错误 谁能举个例子吗。 下面是我的代码: <!DOCTYPE html> <html lang="eng"> <head><title>PDO INSERT TEST</title> <meta http-equiv="CONTENT-TYPE" CONTENT="text/html;c

谁能告诉我我做错了什么? 我是PDO新手,需要学习如何使用bindValue插入,但当我点击submit时,数据库中没有添加任何内容。甚至没有显示错误

谁能举个例子吗。 下面是我的代码:

<!DOCTYPE html>
<html lang="eng">
<head><title>PDO INSERT TEST</title>
<meta http-equiv="CONTENT-TYPE" CONTENT="text/html;charset=utf-8"/>
</head>
<body>
<form action="PDO_test1.php" method="POST">
<p>Name: <input type="text" name="userName" id="Name"/></p>
<p>Last: <input type="text" name="userLast" id="Last"/></p>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

<?php 
    # basic pdo connection (with added option for error handling)
    if (isset($_POST['submit'])) {

        require_once 'includes/PDO_connect.php';
        try {
            $dsn = "mysql:host=$servername;dbname=$dbname";
            $dbc = new PDO($dsn, $username, $password);
            //You can echo out connected to db message
            $dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $query = $dbc->prepare("INSERT INTO `PdoTest1` (userName,userLast,reqistration_date) VALUES (?, ?, ?)");
            # If we leave out the third parameters, it is set to
            # PDO::PARAM_STRING by default
            $query->bindValue(':userName', '%' . $_POST['userName'] . '%');
            $query->bindValue(':userLast', '%' . $_POST['userLast'] . '%');
            $dbc = null;
        }

        catch (PDOException $e) {
            echo $e->getMessage();
        }
        //echo "<p>Data submitted successfully</p>";
    }
?>

PDO插入测试
姓名:

最后:


您应该阅读手册中给出的示例:

他们会帮你很多忙的。阅读它们时,您可以如下更改代码:

$query = $dbc->prepare( "INSERT INTO `PdoTest1` (userName,userLast,reqistration_date) 
VALUES (?, ?, NOW())");
# If we leave out the third parameters, it is set to
# PDO::PARAM_STRING by default
$query->bindValue(1, $_POST['userName']);
$query->bindValue(2, $_POST['userLast']);
$query->execute();
或者,如果您预先将另一个输入:

$query = $dbc->prepare( "INSERT INTO `PdoTest1` (userName,userLast,reqistration_date) 
VALUES (:username, :userLast, NOW())");
# If we leave out the third parameters, it is set to
# PDO::PARAM_STRING by default
$query->bindValue(':username', $_POST['userName']);
$query->bindValue(':userLast', $_POST['userLast']);
$query->execute();

我的语法没有在数据库中插入任何内容。。我甚至不知道这看起来是否有意义。我没有发现任何错误。你没有显示错误。但是请注意,您没有设置查询的第三个参数,也没有执行查询
$query->execute()
。我很惊讶您没有因为使用错误的占位符而出错<代码>?和
:var
不要混用。为什么
“%”
?这与syntax.RTM类似。在这方面,我如何处理第三个参数的注册日期?需要一些指导,伙计们!。我们刚刚处理的与SQL注入攻击相比,这种方法的安全性如何?这里有一个很好的答案: