PHP mysqli request [duplicate]

Краткий ответ: ваш метод foo() возвращается немедленно, а вызов $ajax() выполняется асинхронно после возврата функции . Проблема заключается в том, как и где сохранить результаты, полученные при вызове async, после его возврата.

В этом потоке было задано несколько решений. Возможно, самый простой способ - передать объект методу foo() и сохранить результаты в члене этого объекта после завершения асинхронного вызова.

function foo(result) {
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;   // Store the async result
        }
    });
}

var result = { response: null };   // Object to hold the async result
foo(result);                       // Returns before the async completes

Обратите внимание, что вызов foo() ] все равно не вернут ничего полезного. Однако результат асинхронного вызова теперь будет сохранен в result.response.

-2
задан DamianFox 5 May 2014 в 14:15
поделиться

2 ответа

Вам нужно выполнить итерацию по набору результатов, возвращаемому MySQL. Это означает вызов mysqli_fetch_array() для каждой строки этого набора результатов. Вы можете сделать это, используя цикл while:

while($row = mysqli_fetch_assoc($result)) {
    $rows[] = array("name"      => $row['name'],
                    "city"      => $row['bill_city'],
                    "code"      => $row['bill_code'],
                    "country"   => $row['bill_country'],
                    "street"    => $row['bill_street'],
                    "latitude"  => $row['latitude'],
                    "longitude" => $row['longitude'],
                    "type"      => $row['setype']);
    }
}
2
ответ дан John Conde 5 September 2018 в 09:41
поделиться

Не использовать для loop для извлечения SQL-запросов. Вместо этого используйте while:

if($result->num_rows > 0){
    while($row = mysqli_fetch_assoc($result))
    {
        $rows[] = array("name" => $row[0],
                        "city" => $row[1],
                        "code" => $row[2],
                        "country" => $row[3],
                        "street" => $row[4],
                        "latitude" => $row[5],
                        "longitude" => $row[6],
                        "type" => $row[7]);
    }
}
2
ответ дан Bc. Poklop 5 September 2018 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: