加载我的其余api时出现mysql错误

时间:2017-11-19 23:01:04

标签: php mysql rest api

我在使用函数login检查auth_key并在不存在时更新它时收到此错误。 以下是错误和代码:

  

{“text”:SQLSTATE [42000]:语法错误或访问冲突:1064您   有一个       SQL语法错误;查看与MariaDB对应的手册       服务器版本,用于在第1行'@ gmail.com'附近使用的正确语法}

这是我的功能代码:

$app->post('/api/salesman/login',function(Request $request, Response $response)
{
    //echo "CUSTOMERS";

    $auth_key = $request->getParam('auth_key');
    $email = $request->getParam('email');
    $business_id = $request->getParam('business_id');

    $sql = "SELECT email FROM salesman WHERE email = $email";

    $sql1="SELECT auth_key FROM salesman WHERE email =$email";

    $sql2="UPDATE salesman SET
                auth_key = :auth_key

            WHERE email = $email";

    try{
        // Get DB Object
        $db = new db();
        // Connect
        $db = $db->connect();

        $stmt =$db->query($sql);

        $email_id = $stmt->fetchAll(PDO::FETCH_OBJ);
        //$db = null;
        //echo ($customer_id);
        if($email_id==null)
            echo 'Please contact administrator';
        else
        {

        $stmt =$db->query($sql1);

        $auth_id = $stmt->fetchAll(PDO::FETCH_OBJ);
        //$db = null;
        if($auth_id=null)
        {
            $stmt = $db->prepare($sql2);
            $stmt->bindParam(':auth_key', $auth_key);
            $stmt->execute();
            echo '{"notice": {"text": "Login Successful"}';

        }

            echo '{"notice": {"text": "Login Successful"}';
        }




    }

    catch(PDOException $e)
    {
        echo '{"error":{"text":'.$e->getMessage().'}';
    }

});

请帮我弄清楚错误,因为我无法注意到它 是由于sql语法

1 个答案:

答案 0 :(得分:0)

当您使用email = $ email时,SQL认为$ email也是一个列名。所以他试图将电子邮件命名为op example@gmail.com。但该列不存在。而不是那样,你可以使用引号

WHERE email = '$email'

你能试试上面的例子吗? (我今天遇到了同样的问题)