我在使用函数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语法
答案 0 :(得分:0)
当您使用email = $ email时,SQL认为$ email也是一个列名。所以他试图将电子邮件命名为op example@gmail.com。但该列不存在。而不是那样,你可以使用引号
WHERE email = '$email'
你能试试上面的例子吗? (我今天遇到了同样的问题)