php - 谁能看到这个 PHP PDO 语句有什么问题
问题描述
谁能看到我在这里做错了什么?我越来越:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“INSERT INTO userDevice(userID、deviceID、deviceName、deviceOS、deviceOSVersion”附近使用正确的语法
当我为 INSERT 和 UPDATE 使用单独的参数时,它工作正常,但我切换到用户变量以减少绑定参数的数量..
private function saveDeviceData($userID,$deviceID,$deviceName,$deviceOS,$deviceOSVersion)
{
$sql = "SET @did = :did, @dname = :dname, @dos = :dos, @dver = :dver;";
$sql .= "INSERT INTO userDevice (userID, deviceID, deviceName, deviceOS, deviceOSVersion, timestamp) VALUES(:uid, @did, @dname, @dos, @dver, NOW())";
$sql .= " ON DUPLICATE KEY UPDATE deviceID = @did, deviceName = @dname, deviceOS = @dos, deviceOSVersion = @dver, timestamp = NOW()";
try {
$ps = $this->db->prepareStatement($sql);
$ps->bindParam(":uid",$userID, PDO::PARAM_INT);
$ps->bindParam(":did",$deviceID, PDO::PARAM_STR);
$ps->bindParam(":dname",$deviceName, PDO::PARAM_STR);
$ps->bindParam(":dos",$deviceOS, PDO::PARAM_STR);
$ps->bindParam(":dver",$deviceOSVersion, PDO::PARAM_STR);
$ps->execute();
return TRUE;
}
catch (PDOException $e)
{
$this->error("PDO Error: ".$e->getMessage());
$this->validationError($this->kInvalidEmailOrPasswordMessage);
return FALSE;
}
}
解决方案
推荐阅读
- c# - 将 ForEach 表转换为 Datatable Jquery 表的简单方法?
- c# - mvc视图层中div中的条件
- azure - Azure 应用程序网关和 Key Vault - GW 看不到续订的 SSL 证书
- hy - HyLang:如何在 hy 中最简单的 for 循环?
- r - R:按时间段聚合时间序列列表
- c# - 将旧版 Entity Framework 4.0 升级到 5.0
- gdb - gdb 可以打印扩展的预处理器/宏结果吗?
- javascript - 在 JS 中查询 html 中的 id
- android - activity_main 看起来完全不同
- javascript - 如何使用 vue js 将 paypal 集成到 vue 应用程序中?