【发布时间】:2018-08-01 07:10:17
【问题描述】:
我正在尝试使用 PDO 插入我的数据库,但我的代码有问题:
( ! ) 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 16 行的 C:\wamp64\www\Pd\sql.php 中的 '
'user`, `pass`) VALUES (?,?)' at line 1' 附近使用正确的语法( ! ) PDOException: SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 16 行的 C:\wamp64\00\00\sql.php 的第 1 行的“
'user`, `pass`) VALUES (?,?)”附近使用正确的语法
我的代码:
<?php
$dbname ="snabel_db";
$dbhost ="localhost";
$dbuser ="root";
$dbpass ="";
$db = new PDO('mysql:dbname='.$dbname.';host='.$dbhost.';charset=utf8', ''.$dbuser.'', ''.$dbpass.'') or die();
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST['add'])){
$user2 = $_POST['user'];
$pass2 = $_POST['pass'];
$sql ="INSERT INTO `user`('user`, `pass`) VALUES (:user1,:pass1)";
$sqlreuslt = $db->prepare($sql);
$pdoexec = $sqlreuslt->execute(array(":user1"=>$user2,":pass1"=>$pass2));
if($pdoexec){
echo 'DOne';
}else{
echo 'error';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Sql Test</title>
</head>
<body>
<form method="post" action="sql.php">
<label>Username</label><input type="text" name="user"><br>
<label>Password</label><input type="password" name="pass">
<input type="submit" name="add">
</form>
</body>
</html>
【问题讨论】:
-
首先我建议您将连接更改为
$db = new PDO('mysql:dbname='.$dbname.';host='.$dbhost.';charset=utf8', $dbuser, $dbpass ) or die();