Мне нужно получить доступ к БД, чтобы хранить информацию, полученную из запроса, в виде массива, и получить sh больше данных, полученных из внешних источников, чтобы, наконец, сохранить обновленный массив с помощью API. Суть моего запроса заключается в идентификаторе каждого клиента, который ранее был получен из API, с использованием идентификатора, который я запускаю, чтобы узнать, есть ли информация в БД, однако не у каждого клиента есть данные, хранящиеся в БД, и с тех пор Я, к сожалению, работаю непосредственно над производством, боюсь проверить, что произойдет, если я попытаюсь набрать sh пустой $newData
из-за боязни испортить (поэтому я не использую array_push()
в Тестовый код, который я опубликую ниже, но var_dump($newData)
. Я пробовал несколько вещей, чтобы пропустить l oop, когда это так, и в настоящее время я использую другой var_dump($msg)
для тестирования, но я не могу чтобы установить правильные условия, чтобы сообщение никогда не появлялось.
Это мой запрос и код, который обновляет вышеупомянутый массив:
$stmt = $conn->prepare('SELECT a.`zone`, b.`source_customer_billing_zone_id`, b.`source_external_subscriber_id`, SUM((CEIL(b.`duration`))/60) AS minutos, SUM((b.`source_customer_cost`)/100) AS total
FROM `billing`.billing_zones a INNER JOIN cdr b
ON a.`id` = b.`source_customer_billing_zone_id`
WHERE source_external_subscriber_id = :source_external_subscriber_id
GROUP BY b.`source_external_subscriber_id`, a.`zone`
ORDER BY total desc');
$stmt->execute(array('source_external_subscriber_id' => $source_external_subscriber_id));
foreach ($stmt as $row) {
$newData = [
'name' => $row['zone'],
'sku' => $row['source_customer_billing_zone_id'],
'units' => $row['minutos'],
'subtotal' => $row['total'],
'tax' => 21,
'account' => $account
];
array_push($invoice['products'], $newData);
}
$invoice
- это массив, который я создаю из API, к которому я должен прикрепить информацию о БД. Всякий раз, когда $source_external_subscriber_id
имеет записи в БД, он прекрасно работает, но если идентификатор отсутствует, я не знаю, как пропустить l oop для этого идентификатора. . * 1 012 *
В данный момент я попробовал несколько вещей, но ни одна из них не работает, так как $msg
никогда не отображается:
/* 1 */
foreach ($stmt as $row) {
if (!empty($row) && $row != "") {
$newData = [
'name' => $row['zone'],
'sku' => $row['source_customer_billing_zone_id'],
'units' => $row['minutos'],
'subtotal' => $row['total'],
'tax' => 21
];
var_dump($newData);
}else{
$msg = "There are no entries";
var_dump($msg);
}
}
/* 2 */
if (!empty($stmt)) {
foreach ($stmt as $row) {
$newData = [
'name' => $row['zone'],
'sku' => $row['source_customer_billing_zone_id'],
'units' => $row['minutos'],
'subtotal' => $row['total'],
'tax' => 21
];
var_dump($newData);
}
}else{
$msg = "There are no entries";
var_dump($msg);
}
/* 3 */
if (!is_array($stmt)) {
$msg = "There are no entries";
var_dump($msg);
}else{
foreach ($stmt as $row) {
$newData = [
'name' => $row['zone'],
'sku' => $row['source_customer_billing_zone_id'],
'units' => $row['minutos'],
'subtotal' => $row['total'],
'tax' => 21
];
var_dump($newData);
}
}
-UPDATE-
При попытке третье решение, о котором я подумал, оно всегда отображает $msg
, потому что на самом деле это не массив: когда я выкидываю переменную, появляется запрос. Я понятия не имею, как это сделать. Спасибо всем за помощь!