簡體   English   中英

MySQL PDO INSERT ... SELECT IF語句不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM