-1

需要在 MySQL 数据库上运行查询以查找特定的记录集。然后创建一个 while 循环将记录发送到 Web 服务。代码正在运行,但我发现了一些问题。

即使mysqli_fetch_assoc用于存储行,是否需要设置额外的数组?$array = array();我的代码中的语法$array[] = $row;并不总是返回较大结果集的所有行,但是当省略这些行时,它会返回它应该返回的所有行。

有人可以向我解释一下吗?mysqli_fetch_assoc我在另一个论坛上找到了这个示例,只是想了解如果已经这样做,为什么该行再次设置为数组?或者确保我的查询返回每一行然后在while循环中发送到Web服务的正确方法是什么

$query = mysqli_query($conn, "SELECT *
FROM `table`.`list`
WHERE `list`.`last_local_call_time` >= DATE_SUB(NOW(),INTERVAL 12 HOUR)
AND `list`.`list_id` = '5005'
AND `list`.`vendor_lead_code` = 'test'");

// set array

$array = array();

// look through query

while($row = mysqli_fetch_assoc($query)){

  // add each row returned into an array

  $array[] = $row;

//payload

  $row['phone_number'] = preg_replace('/^27/', '0', $row['phone_number']);
  $data_json = '{
    "LeadDetails": [
        {
            "Attribute": "Phone",
            "Value": "'.$row['phone_number'].'"
        },
        {
            "Attribute": "SearchBy",
            "Value": "Phone"
        }
    ],
    "Activity": {
    "ActivityEvent": 201,
    "Fields": [
        {
            "SchemaName": "Status",
            "Value": "'.$row['status'].'"
        }
    ]
}

//send payload to API

  $curl_url = 'https://test.api.com';
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL, $curl_url);             
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);                                                
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(  
      'Content-Type: application/json',                                                                          
      'Content-Length: ' . strlen($data_json))                                                                       
  ); 
  curl_setopt($ch, CURLOPT_VERBOSE, 0); 
  $curl_result = curl_exec($ch);
  $curl_info = curl_getinfo($ch);
echo $curl_result;
//error checking
if (curl_error($ch)) {
$error_msg = curl_error($ch);
//echo $error_msg;
}
}';
4

1 回答 1

-1

有时会声明一个数组,以便可以在范围之外使用它。在这种情况下,范围是 while 循环。但是在这个例子中,你可以只使用 $row 并删除数组。

声明数组的另一个原因是要明确从数据库中检索的内容,因此不要使用 $array,而是使用 $phoneNumbers 之类的东西。

于 2020-03-10T18:35:03.877 回答