Нужно ли создавать массив перед тем, как помещать в него элементы? - PullRequest
0 голосов
/ 10 марта 2020

Необходимо выполнить запрос к базе данных MySQL, чтобы найти указанный c набор записей. Затем создайте некоторое время l oop для отправки записей в веб-службу. Код работает, но я нашел несколько проблем.

Нужно ли устанавливать дополнительный массив, даже если mysqli_fetch_assoc используется для хранения строк? Синтаксис $array = array(); и $array[] = $row;, присутствующий в моем коде, не всегда возвращает все строки для больших наборов результатов, но, опуская их, он возвращает все строки, которые он должен.

Может кто-нибудь, пожалуйста, объясните мне это? Я нашел этот пример на другом форуме и просто хочу понять, почему строка снова была задана как массив, если mysqli_fetch_assoc уже делает это? Или как правильно обеспечить, чтобы мой запрос возвращал каждую строку, а затем отправлял в веб-службу в то время как l oop

$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;
}
}';

1 Ответ

0 голосов
/ 10 марта 2020

Иногда массив объявляется, поэтому его можно использовать за пределами области видимости. В этом случае область действия пока l oop. Однако в этом примере вы можете просто использовать $ row и удалить массив.

Еще одна причина объявить массив - прояснить, что вы извлекаете из базы данных, поэтому вместо $ array что-то вроде $ phoneNumbers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...