首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入..。在MAMP上不存在,但在真正的服务器上不工作

插入..。在MAMP上不存在,但在真正的服务器上不工作
EN

Stack Overflow用户
提问于 2020-03-11 18:04:26
回答 1查看 119关注 0票数 1

我正在尝试将我的站点(我在MAMP服务器上本地开发的)迁移到实时服务器上。所有查询都按预期在MAMP上工作。在实时服务器上,我在具有“输入.不存在”的查询中会出现错误。

MAMP服务器:PHP-7.4.2 MySQL - 5.7.26 InnoDB

实时服务器:PHP-7.4 MariaDB - 10.2 InnoDB

结构和主键是相同的-检查所有表。

$user_id,$id,$date,$summ -是变量,我得到的是POST方法。

查询:

代码语言:javascript
复制
if ($result = $link->prepare("INSERT INTO sb_user_checks (user_id, check_id, date_update, summ, updated_by) 
    SELECT ?, ?, ?, ?, 'You'
    WHERE NOT EXISTS (SELECT date_update FROM sb_user_checks WHERE user_id=? AND check_id=? AND date_update=?)
    ")) { 
        $result->bind_param('iisiiis', $user_id, $id, $date, $summ, $user_id, $id, $date);
        $result->execute();
        if (mysqli_affected_rows($link)>0) {echo 'added';}
        $result->close();
    } 

我收到了以下错误:

#1064 --您的SQL语法有错误;请检查与MariaDB服务器版本对应的手册,以便在“不存在的地方”附近使用正确的语法(从第3行的sb_user_checks WHERE user_i中选择date_update,这与MySQL版本有关,还是它的查询不正确?但是,同样,它在MAMP.

上也是正确工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-11 19:47:04

在MySQL中,我相信当语法需要时,查询可以使用DUAL作为表的后盾,但总体逻辑不需要。例如,在本例中:

代码语言:javascript
复制
SELECT ?, ?, ?, ?, 'You'
FROM DUAL
WHERE NOT EXISTS ...

双重操作类似于单个行,没有列表;实际上,它只是作为这样的场景的代表。这些因素有若干影响:

  • 它不能和SELECT *
  • 一起使用它不能别名
  • 不能是JOINed to。
  • 更多.这些限制只是我在编写这个答案时手动运行快速测试时发现的。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60642110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档