Php 如何消除循环函数的select查询中的重复?

Php 如何消除循环函数的select查询中的重复?,php,codeigniter,sugarcrm,suitecrm,Php,Codeigniter,Sugarcrm,Suitecrm,我是php初学者。我有从数据中获取循环选择查询的创建函数,我有显示相同id的多个选择查询。如何消除重复查询 代码: for ($i = 0; $i < count($_REQUEST['bulk_invoice_group_id']); $i++) { $bulk_invoice_id = create_guid(); $sql = "INSERT INTO ggs_bulk_invoice(id, group_id, service_date, city, s

我是php初学者。我有从数据中获取循环选择查询的创建函数,我有显示相同id的多个选择查询。如何消除重复查询

代码:

for ($i = 0; $i < count($_REQUEST['bulk_invoice_group_id']); $i++) {
       $bulk_invoice_id = create_guid();
       $sql = "INSERT INTO ggs_bulk_invoice(id, group_id, service_date, city, service, duration, notes,rate,rate_with_vat, vendor_id,service_meeting_id)"
               . " VALUES('$bulk_invoice_id','{$_REQUEST['bulk_invoice_group_id'][$i]}','{$_REQUEST['bulk_invoice_date'][$i]}','{$_REQUEST['bulk_invoice_city'][$i]}','{$_REQUEST['bulk_invoice_service'][$i]}','{$_REQUEST['bulk_invoice_duration'][$i]}','{$_REQUEST['bulk_invoice_notes'][$i]}' ,'{$_REQUEST['bulk_invoice_rate'][$i]}','{$_REQUEST['bulk_invoice_rate_vat'][$i]}','{$_REQUEST['bulk_invoice_vendor_id'][$i]}','{$_REQUEST['bulk_invoice_meeting_id'][$i]}')";
       $db->query($sql);
       $sql = "INSERT INTO ginvo_client_invoice_ggs_bulk_invoice_1_c(id, ginvo_client_invoice_ggs_bulk_invoice_1ginvo_client_invoice_ida, ginvo_client_invoice_ggs_bulk_invoice_1ggs_bulk_invoice_idb)"
               . " VALUES('" . create_guid() . "','$bean->id','$bulk_invoice_id')";
       $db->query($sql);

       $query = "SELECT DISTINCT ON (id_c) ids_c, service_type_c FROM meetings_cstm WHERE id_c='".$_REQUEST['bulk_invoice_meeting_id'][$i]."'";

       echo "<pre>";
       print_r($query);
       echo "</pre>";

   }
for($i=0;$iquery($sql);
$sql=“插入ginvo_客户_发票_ggs_批量发票_1_c(id,ginvo_客户_发票_ggs_批量发票_1Ginvoice_客户_发票_ida,ginvo_客户_发票_ggs_批量发票_1ggs_批量发票_idb)”
“值(“.create_guid().”、“$bean->id”、“$bulk_invoice_id”);
$db->query($sql);
$query=“在(id_c)id_c、服务类型_c上选择与会议不同,其中id_c=”。$\u请求['bulk_invoice_meeting_id'][$i]。”;
回声“;
打印(查询);
回声“;
}

根据
id\u c
+
max
(或
min
)在
id\u c
服务类型\u c

(如果有重复项,则只需使用规则选择一个值)


id\u c
+
max
(或
min
)在
id\u c
service\u type\u c

(如果有重复项,则只需使用规则选择一个值)


好的,那么您要寻找的答案就是在循环数组时简单地存储ID缓存。如果出现重复,只需跳过它:

$sql = "
    insert into tablename (
        col1,
        col2,
        col3
    ) values (
        'val1',
        'val2',
        'val3'
    )
";

对性能没有任何影响。它只是更易于阅读。

好的,所以您要寻找的答案是在循环阵列时只需存储ID缓存。如果出现重复,只需跳过它:

$sql = "
    insert into tablename (
        col1,
        col2,
        col3
    ) values (
        'val1',
        'val2',
        'val3'
    )
";

对性能没有任何影响。它只是更易于阅读。

首先,访问并了解SQL注入以及如何防止它们。您的代码根本不安全,而且很容易受到注入的影响。您的整个数据库可以在几秒钟内删除,而无需对系统有更深入的了解。您的第二个查询有一个对象-
$bean
,并使用
$bean->id
作为插入值。
$bean
来自何处?首先,访问并了解SQL注入以及如何防止它们。您的代码根本不安全,而且很容易受到注入攻击。您的整个数据库可以在几秒钟内删除,而无需任何操作您的第二个查询有一个对象-
$bean
,并使用
$bean->id
作为插入值。
$bean
来自哪里?
$sql = "
    insert into tablename (
        col1,
        col2,
        col3
    ) values (
        'val1',
        'val2',
        'val3'
    )
";