Получение этой ошибки на новом веб-хосте Неопределенное смещение: 1 и 2 - PullRequest
0 голосов
/ 05 октября 2018

Я недавно переместил свой скрипт на новый веб-хост, и теперь я получаю эту ошибку

Примечание: неопределенное смещение: 1 (строка $ id2) Примечание: неопределенное смещение: 2 (строка $ id3)

Вот мой PHP-код

<?php
include '../connect_database.php'; 

$sql = "SELECT score FROM dailyscore Where Id IN (1,2,3)";
date_default_timezone_set('America/New_York');
$result = $connect->query($sql);
while ($row = mysqli_fetch_assoc($result)){
$rows[] = $row; 
$id1= $rows[0]['score'];
$id2= $rows[1]['score'];
$id3= $rows[2]['score'];

}

$list['scores'] = array('data' => $id1, 'data1' => $id2, 'data2' => $id3);

$myJSON = json_encode($list);

echo $myJSON;
print_r($rows);
?>

Есть идеи почему?

1 Ответ

0 голосов
/ 05 октября 2018

Я думаю, что это признак некорректного дизайна.Похоже, вы пытаетесь найти результаты для 3 игроков.Вы перебираете 3 строки, но пытаетесь получить доступ к данным для всех 3 игроков в каждой итерации.Вместо этого вы должны получить доступ к данным каждого игрока в соответствующей итерации и составить список данных игрока.

Чтобы ответить на ваш вопрос напрямую, в итерации 1 вы пытаетесь получить доступ к элементам 0, 1 и 2, но $rows заполнено только 0.

+-----------+-------------------------+--------------------------+
| Iteration | You're trying to access | You only have access to  |
+-----------+-------------------------+--------------------------+
|         1 |                   0,1,2 |                        0 |
|         2 |                   0,1,2 |                      0,1 |
|         3 |                   0,1,2 |                    0,1,2 |
+-----------+-------------------------+--------------------------+

Пример

<?php
// Turn on error reporting
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Show MySQL errors as PHP exceptions
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

include '../connect_database.php'; 

// Build up this list inside the loop. 
$scores = [];

$sql = "SELECT score FROM dailyscore Where Id IN (1,2,3)";
date_default_timezone_set('America/New_York');
$result = $connect->query($sql);
while ($row = mysqli_fetch_assoc($result)){
    // You only have access to a single $row here. 
    // Build up an array of the data you want instead of tring to access "other rows"
    $scores[] = $row['score'];
}

// Now, you can use $scores to build $list... or build $list inside the loop. 
?>

РЕДАКТИРОВАТЬ

Не хотите ли вы показать мне пример того, какприсвоить массиву результатов что-то вроде этого?$ list ['scores'] = массив ('data' => $ id1, 'data1' => $ id2, 'data2' => $ id3);

<?php
// Turn on error reporting
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Show MySQL errors as PHP exceptions
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

include '../connect_database.php'; 

// Build up this list inside the loop. 
$scores = [];
$counter = 0;

$sql = "SELECT score FROM dailyscore Where Id IN (1,2,3)";
date_default_timezone_set('America/New_York');
$result = $connect->query($sql);
while ($row = mysqli_fetch_assoc($result)){

    $keyName = 'data';

    if ($counter > 0) {
        $keyName = 'data' . $counter;
    }

    $scores[$keyName] = $row['score'];

    $counter++;
}

$list['scores'] = $scores;

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