[英]MySQL PDO INSERT … SELECT IF statement not working
編輯:愚蠢的變量名稱不匹配。 即使經過多年的編碼,也會出現簡單的錯誤。
$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 。
或者您可以自己轉義文字並將其直接添加到查詢字符串中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.