簡體   English   中英

我的MySQLi查詢給出了錯誤,但我找不到那是錯的

[英]My MySQLi query gives error but i can't find out thats wrong with it

我正在使用mysql查詢來使用LEFT OUTER JOIN從多個表中選擇數據。 現在當我執行查詢時出現以下錯誤:

您的SQL語法有誤; 檢查與您的MySQL服務器版本對應的手冊以獲取正確的語法,以在第16行的'wg.werkbon_global_id = wk.werkbon_klant_globalid左外部加入用戶AS u'附近使用

唯一的問題是我找不到我的查詢出了什么問題。

PHP查詢:

$query = '
    SELECT
        wg.werkbon_global_id AS id,
        wg.werkbon_global_status AS status,
        wg.werkbon_global_date_lastedit AS date,
        usr.user_firstname AS monteur_vn,
        usr.user_insertion AS monteur_tv,
        usr.user_lastname AS monteur_an,
        wg.werkbon_global_type AS type,
        wg.werkbon_global_layout AS layout,
        wg.werkbon_global_werkzaamheden AS werkzaamheden,
        wg.werkbon_global_opmerkingen AS opmerkingen,
        wk.werkbon_klant_nummer AS klantnr
    FROM
        werkbon_klant AS wk
    LEFT OUTER JOIN werkbon_global AS wg
        wg.werkbon_global_id = wk.werkbon_klant_globalid
    LEFT OUTER JOIN users AS usr
        usr.user_id = wg.werkbon_global_monteur_finish
    WHERE
        wk.werkbon_klant_nummer = '.$db->Quote($klantid).'
    ORDER BY id ASC;
$result = $db->loadAssoc($query);

我認為我的問題與左外部連接有關,但又如何呢?

您在聯接中缺少ON運算符!

聯接的正確語法是:

SELECT * FROM x LEFT JOIN y ON condition WHERE...
 $query = "
 SELECT
    wg.werkbon_global_id AS id,
    wg.werkbon_global_status AS status,
    wg.werkbon_global_date_lastedit AS date,
    usr.user_firstname AS monteur_vn,
    usr.user_insertion AS monteur_tv,
    usr.user_lastname AS monteur_an,
    wg.werkbon_global_type AS type,
    wg.werkbon_global_layout AS layout,
    wg.werkbon_global_werkzaamheden AS werkzaamheden,
    wg.werkbon_global_opmerkingen AS opmerkingen,
    wk.werkbon_klant_nummer AS klantnr
FROM
    werkbon_klant AS wk
LEFT OUTER JOIN werkbon_global AS wg
    wg.werkbon_global_id = wk.werkbon_klant_globalid
LEFT OUTER JOIN users AS usr
    usr.user_id = wg.werkbon_global_monteur_finish
WHERE
    wk.werkbon_klant_nummer = '.$db->Quote($klantid).'
ORDER BY id ASC";

$ result = $ db-> loadAssoc($ query);

確保沒有缺少報價

由於arkascha解決了問題

現在,固定查詢為:

$query = '
    SELECT
        wg.werkbon_global_id AS id,
        wg.werkbon_global_status AS status,
        wg.werkbon_global_date_lastedit AS date,
        usr.user_firstname AS monteur_vn,
        usr.user_insertion AS monteur_tv,
        usr.user_lastname AS monteur_an,
        wg.werkbon_global_type AS type,
        wg.werkbon_global_layout AS layout,
        wg.werkbon_global_werkzaamheden AS werkzaamheden,
        wg.werkbon_global_opmerkingen AS opmerkingen,
        wk.werkbon_klant_nummer AS klantnr
    FROM
        werkbon_klant AS wk
    LEFT OUTER JOIN werkbon_global AS wg ON
        wg.werkbon_global_id = wk.werkbon_klant_globalid
    LEFT OUTER JOIN users AS usr ON
        usr.user_id = wg.werkbon_global_monteur_finish
    WHERE
        wk.werkbon_klant_nummer = '.$db->Quote($klantid).'
    ORDER BY id ASC';
$result = $db->loadAssoc($query);

@fred我不需要按列名添加引號。 您只需要按字符串/ blob值添加引號。 @johny我的$ db-> Quote()函數將自動添加qoutes。 我不需要添加它們並將所有內容都放在引號中。

謝謝大家的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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