我创建了一个注册表单来获取用户的详细信息。但是,当用户进入细节它给这个错误:尝试在MySQL中存储用户电子邮件和其他详细信息时产生错误?
INSERT INTO players(first_name, last_name, username, email, password) VALUES (John, Doe, john.doe, [email protected], doe) SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@yahoo.com, aman)' at line 1
Thank you for registering!
这是我对形式的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>";
?>
我曾尝试&抓捕获错误因为没有它被显示
Thank you for registering!
并且数据未存储在数据库中。
UPDATE: 这里是PDO的预处理语句代码:
<?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>";
?>
收到此错误:
Parse error: syntax error, unexpected ';' in public_html\php\reg.php on line 16
因此,如果我想将我的代码转换为PDO的Prepared语句,那么该怎么做?你可以编辑我的代码,并给我一个简要的想法,如何完成。我曾尝试过但未成功。 – Crayator
我给出的代码应该用于脚本,用这两个语句替换$ sql = ..和$ dbh-> exec()行。 –
获取此错误:**解析错误:语法错误,意外';'在第16行public_html \ php \ reg.php ** ** – Crayator