我正在使用Prestashop,並且我有一個模塊可以爲我的訂單生成裝運標籤。製作標籤後,會生成可在運營商網站上使用的跟蹤代碼。但問題是,我們的託運人必須將此代碼複製並粘貼到prestashop中,以便客戶收到跟蹤電子郵件。我的目標是使這一過程自動化,以最大限度地減少系統內的人爲錯誤。SQL Submit的正確語法
我在prestashop的數據庫中找到了包含跟蹤代碼(ps_order_carrier,tracking_number)的表格和列,並且我確認在數據庫中更改此值會按照我的預期方式生效。在prestashop模塊中,有一段代碼提交跟蹤號碼和各種訂單信息,如訂單ID,我可能需要它自己的表,所以我假設我可以複製這部分代碼並修改它以符合我的需求。以下是模塊中的代碼:
$sql = 'INSERT INTO '._DB_PREFIX_.$this->name.'_labels
(
id_order,
id_shipment,
postage_label_ref_id,
postage_label_object,
postage_label_updated_at,
postage_label_label_url,
tracking_code,
selected_rate_ref_id,
selected_rate_object,
selected_rate_updated_at,
selected_rate_service,
selected_rate_carrier,
selected_rate_shipment_ref_id,
tracker_ref_id,
tracker_object
)
VALUES
(
"'.(int)$data['id_order'].'",
"'.pSQL($data['id_shipment']).'",
"'.pSQL($data['postage_label']['ref_id']).'",
"'.pSQL($data['postage_label']['object']).'",
"'.pSQL($data['postage_label']['updated_at']).'",
"'.pSQL($data['postage_label']['label_url']).'",
"'.pSQL($data['tracking_code']).'",
"'.pSQL($data['selected_rate']['ref_id']).'",
"'.pSQL($data['selected_rate']['object']).'",
"'.pSQL($data['selected_rate']['updated_at']).'",
"'.pSQL($data['selected_rate']['service']).'",
"'.pSQL($data['selected_rate']['carrier']).'",
"'.pSQL($data['selected_rate']['shipment_ref_id']).'",
"'.pSQL($data['tracker']['ref_id']).'",
"'.pSQL($data['tracker']['object']).'"
)';
Db::getInstance()->Execute($sql);
我做的這個正下方副本,並修改它來滿足我的需求,但它似乎並沒有做什麼,我想它。我有一種感覺,我搞亂了語法。我試過它的幾個不同的變化所以這是一個有點亂,但這裏是我寫這篇文章:
$sql2 = 'INSERT INTO `ps_order_carrier` WHERE `id_order` = '.(int)$data['id_order'].'
(
tracking_number
)
VALUES
(
"'.pSQL($data['tracking_code']).'"
)';
Db::getInstance()->Execute($sql2);
任何幫助將不勝感激,因爲這會爲我們節省大量的時間。
謝謝!
你確定你不想在這裏做一個更新? INSERT沒有WHERE子句;只有'INSERT ... SELECT'和'INSERT ... ON DUPLICATE KEY UPDATE'。 –
不清楚的問題開始吸引不好的答案;你已經得到(好)答案和我的評論,所以? –
只有考慮SQL標籤並且不包括Prestashop的人才能得到不好的答案:)。 –