【发布时间】:2015-11-08 08:39:27
【问题描述】:
我创建了一个注册表单来获取用户的详细信息。但是当用户输入详细信息时,会出现此错误:
插入玩家(名字、姓氏、用户名、电子邮件、密码) 价值观(John,Doe,john.doe,john.doe@yahoo.com,doe) SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 '@yahoo.com 附近使用正确的语法, aman)' 在第 1 行
感谢您的注册!
这是我的表单 PHP 代码:
<?php
$servername="localhost";
$dbname="users";
$username="root";
$password="pass";
try {
$dbh=new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$username = $_POST["username"];
$email = $_POST["email"];
$pwd = $_POST["password"];
$sql="INSERT INTO players(first_name, last_name, username, email, password) VALUES ($first_name, $last_name, $username, $email, $pwd)";
$dbh->exec($sql);
}
catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
echo "<p>Thank you for registering!</p>";
?>
我确实尝试 & catch 来捕捉错误,因为它没有显示
感谢您的注册!
并且数据没有存储在数据库中。
更新: 这是带有 PDO 的 Prepared 语句的代码:
<?php
$servername="localhost";
$dbname="users";
$username="root";
$password="pass";
try {
$dbh=new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$username = $_POST["username"];
$email = $_POST["email"];
$pwd = $_POST["password"];
$statement = $dbh->prepare("INSERT INTO players(first_name, last_name, username, email, password) VALUES (:first_name, :last_name, :username, :email, :pwd)";
$statement->execute(array(':first_name' => $first_name, ':last_name' => $last_name, ':username' => $username, ':email' => $email, ':pwd' => $pwd));
}
catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
echo "<p>Thank you for registering!</p>";
?>
收到此错误:
解析错误:语法错误,意外';'在 public_html\php\reg.php 在第 16 行
【问题讨论】: