我知道有很多关于这个错误的问题,但是堆栈溢出,谷歌等的答案都没有帮助我解决我的问题。也许这里有人可以弄明白,为什么这个错误不断发生。 我对PHP比较陌生,所以对于很少的应用程序,我阅读了很多教程,并将它们用于我的案例。
我尝试使用以下教程进行注册页面:http://www.codingcage.com/2015/11/ajax-registration-script-using-jquery-php.html
在完成所有操作后,我总是得到错误
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法!
...当我提交注册时。所以我认为必须在代码的这一部分:
$qry = "SELECT * FROM geraeteuser WHERE `user_email` LIKE :email";
$stmt = $db_con->prepare($qry);
$stmt->execute(array(":email"=>$user_email));
我在这里和那里使用了后退尝试了一切,但无论我做什么,它都不起作用。
完整的代码看起来像这样(“geraetestatus”是表名):
<?php
require_once "dbconfig.php";
if($_POST)
{
$user_name = $_POST['user_name'];
$user_email = $_POST['user_email'];
$user_password = $_POST['password'];
$password = md5($user_password);
try
{
$qry = "SELECT * FROM geraeteuser WHERE `user_email` LIKE :email";
$stmt = $db_con->prepare($qry);
$stmt->execute(array(":email"=>$user_email));
$count = $stmt->rowCount();
if($count==0){
$stmt = $db_con->prepare("INSERT INTO `geraeteuser`(user_name,user_email,user_password) VALUES(:uname, :email, :pass");
$stmt->bindParam(":uname",$user_name);
$stmt->bindParam(":email",$user_email);
$stmt->bindParam(":pass",$password);
if($stmt->execute())
{
echo "registered";
}
else
{
echo "Query could not execute !";
}
}
else{
echo "1"; // not available
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}?>
并且在包含的文件“dbconfig.php”中,有一个像这样创建的pdo:
<?php
$db_host = ***;
$db_name = ***;
$db_user = ***;
$db_pass = ***;
try{
$dsn = "mysql:host=$db_host;dbname=$db_name";
$db_con = new PDO($dsn, $db_user, $db_pass, array(PDO::ATTR_PERSISTENT => true));
$db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
echo $e->getMessage();
}?>
有没有人对我有任何建议让这项工作?我尝试了几乎所有我在这里和谷歌答案中找到的东西,但没有任何帮助。
答案 0 :(得分:0)
在插入查询中,字符串末尾是一个缺失的结束括号。 你需要关闭VALUES(... - &gt;)&lt; -