gpt4 book ai didi

php - MySQL PDO INSERT ... SELECT IF 语句不起作用

转载 作者:可可西里 更新时间:2023-11-01 07:43:58 26 4
gpt4 key购买 nike

编辑:愚蠢的变量名不匹配。即使经过多年的编码,也会犯一些简单的错误。

   $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 .

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

关于php - MySQL PDO INSERT ... SELECT IF 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35661337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com