【发布时间】:2016-02-27 04:40:18
【问题描述】:
如果存在其他插入,我正在尝试更新,但收到错误这是我的查询:
IF EXISTS
(
SELECT * FROM pages_staff
WHERE pages_admin_page = :page
AND pages_admin_type = :type
AND pages_admin_user = :user
)
THEN
BEGIN
UPDATE pages_staff
SET pages_admin_page = :page,
pages_admin_type = :type,
pages_admin_user = :user,
pages_admin_permissions = :permission
WHERE pages_admin_page = :page
AND pages_admin_type = :type
AND pages_admin_user = :user
END
ELSE
BEGIN
INSERT INTO pages_staff
(
pages_admin_page,
pages_admin_type,
pages_admin_user,
pages_admin_permissions
)
VALUES
(
:page,
:type,
:user,
:permission
);
END
这是我的 PHP:
//iniate sql
$add_staff = $database->prepare($sql);
//bind params
$user = Session::get('id');
$add_staff->bindParam(":page", $page, PDO::PARAM_INT);
$add_staff->bindParam(":type", $type, PDO::PARAM_STR);
$add_staff->bindParam(":user", $user, PDO::PARAM_INT);
//what permission are they being given
switch($permission):
case 'admin':
$permission = 'admin';
break;
case 'editor':
$permission = 'editor';
break;
case 'moderator':
$permission = 'moderator';
break;
case 'advertiser':
$permission = 'advertiser';
break;
case 'analyst':
$permission = 'analyst';
break;
default: exit;
endswitch;
//bind last param and execute
$add_staff->bindParam(":permission", $permission, PDO::PARAM_STR);
$add_staff->execute();
但我得到了错误
警告:PDOStatement::execute(): SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 中有错误 句法;检查与您的 MySQL 服务器版本相对应的手册 在 'IF EXISTS 附近使用正确的语法 ( 选择 * 从 pages_staff WHERE pages_admin_page =' 在第 1 行的 C:\xampp\htdocs\application\model\EmployeesModel.php 行 468
{"success":false,"error":"添加时出错 此用户的权限”}
我该如何解决这个问题?
【问题讨论】:
-
看这个:stackoverflow.com/questions/5528854/usage-of-mysqls-if-exists - IF 只能在函数/过程中使用,所以也许修改 PHP。
-
BEGIN END 必须包装所有存储过程,而不是代码的不同部分。
-
如果您有唯一索引,那么这可能是一个解决方案:stackoverflow.com/questions/4205181/…