您能否通过以下脚本帮助我?它导入特定的订单并以XML格式显示。问题在于,随机记录(产品ID)可以显示2次。结果,我需要每次都验证输出是否包含错误。总之,如何改进此脚本以确保每个输出都是100%正确的?
<?php
header('Content-type: text/xml');
$xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
// import Prestashop settings
?>
<ZAM>
<?php
$zamowienie = $_GET['zamowienie'];
$context = Context::getContext();
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT', (int)$context->shop->id);
$order_details = Db::getInstance()->ExecuteS('
SELECT o.reference, o.date_add, o.id_order, message
FROM '._DB_PREFIX_.'orders o
LEFT JOIN '._DB_PREFIX_.'customer_message pl ON (pl.date_add = o.date_add)
WHERE o.reference = "'.$zamowienie.'"');
$order_details2 = Db::getInstance()->ExecuteS('
SELECT o.id_order, od.product_reference, od.product_quantity
FROM '._DB_PREFIX_.'orders o
LEFT JOIN '._DB_PREFIX_.'order_detail od ON (od.id_order = o.id_order)
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = od.product_reference)
WHERE o.reference = "'.$zamowienie.'"');
foreach ($order_details as &$od){
echo "<NAG>";
echo "<numer>".$od['id_order']."</numer>";
echo "<data>".$od['date_add']."</data>";
echo "<numer_zam>".$od['reference']."</numer_zam>";
echo "<uwagi>".$od['message']."</uwagi>";
echo "</NAG>";
}
foreach ($order_details2 as &$od){
echo "<POZ>";
echo "<numer>".$od['id_order']."</numer>";
echo "<tw_id>".$od['product_reference']."</tw_id>";
echo "<zam_ilo>".$od['product_quantity']."</zam_ilo>";
echo "</POZ>";
};
?>
</ZAM>
感谢您指出安全问题。我会修好它。我的问题是由数据库中重复的产品引起的。我应该如何升级sql query以确保即使在数据库中有更多记录,输出中也只会出现一种产品?请看下面的例子。
<ZAM>
<NAG>
<numer>2045</numer>
<data>2020-04-22 17:51:04</data>
<numer_zam>HJJDHNTBV</numer_zam>
<uwagi/>
</NAG>
<POZ>
<numer>2045</numer>
<tw_id>7069</tw_id>
<zam_ilo>4</zam_ilo>
</POZ>
<POZ>
<numer>2045</numer>
<tw_id>7069</tw_id>
<zam_ilo>4</zam_ilo>
</POZ>
<POZ>
<numer>2045</numer>
<tw_id>98404</tw_id>
<zam_ilo>1</zam_ilo>
</POZ>
</ZAM>
这部分代码由于重复的产品ID 7069而出现2次。
<POZ>
<numer>2045</numer>
<tw_id>7069</tw_id>
<zam_ilo>4</zam_ilo>
</POZ>