PHP:SQLSTATE [42000]:语法错误或访问冲突:1064

时间:2017-05-10 05:58:31

标签: php jquery mysql ajax pdo

我知道有很多关于这个错误的问题,但是堆栈溢出,谷歌等的答案都没有帮助我解决我的问题。也许这里有人可以弄明白,为什么这个错误不断发生。 我对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();
}?>

有没有人对我有任何建议让这项工作?我尝试了几乎所有我在这里和谷歌答案中找到的东西,但没有任何帮助。

1 个答案:

答案 0 :(得分:0)

在插入查询中,字符串末尾是一个缺失的结束括号。 你需要关闭VALUES(... - &gt;)&lt; -