加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL PDO INSERT … SELECT IF语句不起作用

发布时间:2020-12-13 22:25:43 所属栏目:PHP教程 来源:网络整理
导读:编辑:愚蠢的变量名称不匹配.即使经过多年的编码,也会出现简单的错误. $query = " INSERT INTO table1 (team_id,user_id,team_leader,start_date) SELECT b.team_id,a.user_id,IF (a.agent_id = :leader,1,0),:startdate FROM table2 a LEFT JOIN table3 b O
编辑:愚蠢的变量名称不匹配.即使经过多年的编码,也会出现简单的错误.

$query = "
    INSERT INTO table1 (team_id,user_id,team_leader,start_date)
    SELECT b.team_id,a.user_id,IF (a.agent_id = :leader,1,0),:startdate
    FROM table2 a
    LEFT JOIN table3 b ON a.ccb_team_id = b.ccb_team_id
    WHERE b.team_active = 1
      AND a.user_active = 1
      AND b.metro_id = :metroid 
      AND a.ccb_team_id = :teamid
    ON DUPLICATE KEY
       UPDATE team_leader = VALUES(team_leader)";

数据:

$query_data = array(
            ':metroid' => $metro_id,':leader' => $a->ccb_leader_id,':startdate' => $datetime,':teamid' => $a->ccb_team_id
        );

如果我在phpMyAdmin中尝试使用PDO变量所在的实际数据的上述查询,它可以正常工作,并为相关用户正确设置team_leader为1.在PHP CLI中运行它,它不起作用,所有team_leader字段都恢复为0.

我已经验证了$a-> ccb_team_leader包含正确的信息. PDO变量在IF语句中不起作用吗?

编辑:所以在我的PDO查询中使用它时,这似乎是某种对象问题. simplexml中的对象$a输出值很好但不在查询中使用时….

解决方法

您必须重写查询,以便参数位于where子句中.请参阅文档中的示例: http://php.net/manual/en/pdostatement.bindparam.php.

或者您可以自己转义文字并将其直接添加到查询字符串中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读