У меня есть база данных с несколькими данными в ней, но они уникальны, конечно. Эти данные находятся внутри каждой таблицы, telcoCall, telcoData, telcoSMS, в зависимости от его класса.Повторяющиеся данные JSON повторяются
Затем я использую json_encode
, чтобы объединить эти данные в один массив. Внутри telcoCall данные находятся в надлежащем месте. Однако telcoData и telcoSMS беспорядочны. Данные внутри этих таблиц дублируются. Вот как это выглядит,
Вот код:
<?PHP
include '../initialization.php';
$mysqli = @mysqli_connect($host, $username, $password, $db);
$query = 'SELECT t.*, c.*, d.*, s.* '.
'FROM telco t '.
'INNER JOIN telcoCall c ON t.telcoId = c.telcoId '.
'INNER JOIN telcoData d ON t.telcoId = d.telcoId '.
'INNER JOIN telcoSMS s ON t.telcoId = s.telcoId '.
'ORDER BY t.telcoName, c.callName, d.dataName, s.smsName';
//setup array to hold information
$telcos = array();
//setup holders for the different types so that we can filter out the data
$telcoId = 0;
$callId = 0;
$dataId = 0;
$smsId = 0;
//setup to hold our current index
$telcoIndex = -1;
$callIndex = -1;
$dataIndex = -1;
$smsIndex = -1;
if ($result = mysqli_query($mysqli, $query)) {
//go through the rows
while($row = mysqli_fetch_assoc($result)) {
if($telcoId != $row['telcoId']) {
$telcoIndex++;
$callIndex = -1;
$dataIndex = -1;
$smsIndex = -1;
$telcoId = $row['telcoId'];
//add the console
$telcos[$telcoIndex]['Telco'] = $row['telcoName'];
//setup the information array
$telcos[$telcoIndex]['Call Promo'] = array();
$telcos[$telcoIndex]['Data Promo'] = array();
$telcos[$telcoIndex]['SMS Promo'] = array();
}
if($callId != $row['callId']) {
$callIndex++;
$callId = $row['callId'];
//add the model to the console
$telcos[$telcoIndex]['Call Promo'][$callIndex]['Call Name'] = $row['callName'];
//setup the title array
$telcos[$telcoIndex]['Call Promo'][$callIndex]['Call'] = array();
//add the game to the current console and model
$telcos[$telcoIndex]['Call Promo'][$callIndex]['Call'][] = array(
'Keyword' => $row['callKeyword'],
'Description' => $row['callDescription'],
'Number' => $row['callNumber'],
'Validity' => $row['callValidity'],
'Price' => $row['callPrice']
);
}
if($dataId != $row['dataId']) {
$dataIndex++;
$dataId = $row['dataId'];
//add the model to the console
$telcos[$telcoIndex]['Data Promo'][$dataIndex]['Data Name'] = $row['dataName'];
//setup the title array
$telcos[$telcoIndex]['Data Promo'][$dataIndex]['Data'] = array();
//add the game to the current console and model
$telcos[$telcoIndex]['Data Promo'][$dataIndex]['Data'][] = array(
'Keyword' => $row['dataKeyword'],
'Description' => $row['dataDescription'],
'Number' => $row['dataNumber'],
'Validity' => $row['dataValidity'],
'Volume' => $row['dataVolume'],
'Price' => $row['dataPrice']
);
}
if($smsId != $row['smsId']) {
$smsIndex++;
$smsId = $row['smsId'];
//add the model to the console
$telcos[$telcoIndex]['SMS Promo'][$smsIndex]['SMS Name'] = $row['smsName'];
//setup the title array
$telcos[$telcoIndex]['SMS Promo'][$smsIndex]['SMS'] = array();
//add the game to the current console and model
$telcos[$telcoIndex]['SMS Promo'][$smsIndex]['SMS'][] = array(
'Keyword' => $row['smsKeyword'],
'Description' => $row['smsDescription'],
'Number' => $row['smsNumber'],
'Validity' => $row['smsValidity'],
'Price' => $row['smsPrice']
);
}
}
mysqli_free_result($result);
}
echo json_encode($telcos);
mysqli_close($mysqli);
?>
Я действительно не знаю, почему это происходит.
Просьба представить примеры данных, предпочитаемых в виде 'CREATE TABLE ... и 'INSERT INTO ... VALUES ... 'sql statements – VolkerK
Я отредактировал мое сообщение. – Jahm
Thx, но с этим примером данных ваш запрос возвращает нулевые записи. – VolkerK