PDO、PHP和MySQL
谁能告诉我我做错了什么? 我是PDO新手,需要学习如何使用bindValue插入,但当我点击submit时,数据库中没有添加任何内容。甚至没有显示错误 谁能举个例子吗。 下面是我的代码: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
<!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注入攻击相比,这种方法的安全性如何?这里有一个很好的答案: