Поместите все результаты MYSQL в переменную для использования в Ajax - PullRequest
0 голосов
/ 27 июня 2019

Я сделал выборочное предложение, которое выбирает Voornaam, Tussenvoegsel, Achternaam, Email и Telefoonnummer от клиентов, у которых почти есть день рождения. Этот оператор выводит несколько результатов. Я хотел бы использовать каждый результат в ajax позже, чтобы поместить их в мой модал. Как мне это сделать?

Это для базы данных MySQL

$conn = new mysqli("localhost", "root", "Habt2002", "fca");

if ($_POST['key'] == 'bijnaJarig') {
    $sql = $conn->query("SELECT id, Voornaam, Tussenvoegsel, Achternaam, Telefoonnummer, Email 
                        FROM customer 
                        WHERE MONTH(Geboortedatum) = MONTH(CURDATE()) ");
}

Я также попытался использовать вариант кода ниже, чтобы вывести его. Проблема в том, что он выводит только 1 результат.

if ($_POST['key'] == 'getRowData') {
    $rowID = $conn->real_escape_string($_POST['rowID']);
    $sql = $conn->query("SELECT Voornaam, Tussenvoegsel, Achternaam, 
                                Telefoonnummer, Email, Geboortedatum, 
                                Plaats, Postadres, Huisnummer, Postcode, 
                                Leeftijdsgroep, Extratraining, 
                                Verhogingcontributies, Contributies, 
                                Betaald 
                        FROM customer 
                        WHERE id ='$rowID'");
    $data = $sql->fetch_array();
    $jsonArray = array(
            'voornaam' => $data['Voornaam'],
            'tussenvoegsel' => $data['Tussenvoegsel'],
            'achternaam' => $data['Achternaam'],
            'telefoonnummer' => $data['Telefoonnummer'],
            'email' => $data['Email'],
            'geboortedatum' => $data['Geboortedatum'],
            'plaats' => $data['Plaats'],
            'postadres' => $data['Postadres'],
            'huisnummer' => $data['Huisnummer'],
            'postcode' => $data['Postcode'],
            'leeftijdsgroep' => $data['Leeftijdsgroep'],
            'extratraining' => $data['Extratraining'],
            'verhogingcontributies' => $data['Verhogingcontributies'],
            'contributies' => $data['Contributies'],
            'betaald' => $data['Betaald']
        );

        exit(json_encode($jsonArray));
    }

Это код Ajax, который у меня есть на данный момент

function bijnaJarig() {
    $.ajax({
            url: 'ajax.php',
            method: 'POST',
            dataType: 'text',
            data: {
                key: 'bijnaJarig',
            }, success: function (response) {
                alert(response);
                $("#bijnaJarigTable").modal('show');
            }

    })
}

Я знаю, как поместить переменные в модальный режим, но я хочу знать, как получить эти переменные (более 1 результата)

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Опять же, вы читаете только ОДНУ строку из набора результатов, которая может содержать много строк, поэтому вам придется написать цикл ИЛИ просто fetch_all().fetch_all() здесь проще, так как все строки, которые вы возвращаете из базы данных, будут выглядеть точно так же, как промежуточный массив, который вы пытались создать.

if ($_POST['key'] == 'getRowData') {

    $stmt = $conn->prepare(
        "SELECT Voornaam, Tussenvoegsel, Achternaam, 
                Telefoonnummer, Email, Geboortedatum, 
                Plaats, Postadres, Huisnummer, Postcode, 
                Leeftijdsgroep, Extratraining, 
                Verhogingcontributies, Contributies, 
                Betaald 
        FROM customer 
        WHERE id = ?");
    $stmt->bind_param('s', $_POST['rowID'] );
    $stmt->execute();
    $result = $stmt->get_result();

    // fetch ALL the results
    $jsonArray = $result->fetch_all();

    echo json_encode($jsonArray);
}

Если вы сделаете это как цикл, это будет выглядеть такэто

if ($_POST['key'] == 'getRowData') {
    $stmt = $conn->prepare(
        "SELECT Voornaam, Tussenvoegsel, Achternaam, 
                Telefoonnummer, Email, Geboortedatum, 
                Plaats, Postadres, Huisnummer, Postcode, 
                Leeftijdsgroep, Extratraining, 
                Verhogingcontributies, Contributies, 
                Betaald 
        FROM customer 
        WHERE id = ?"
    );
    $stmt->bind_param('s', $_POST['rowID']);
    $stmt->execute();
    $result = $stmt->get_result();

    // fetch ALL the results
    while ($row = $result->fetch_assoc()) {
        $jsonArray[] = $row;
    }

    echo json_encode($jsonArray);
}
0 голосов
/ 27 июня 2019

Вы пытались добавить операторы регистрации, чтобы выяснить, почему вы видите только одну строку результатов? Если вы уверены, что ваш запрос возвращает несколько строк, проверьте, что содержит $data.

Посмотрите документацию : $data будет содержать только одну из строк. Вам нужно продолжать вызывать fetch_array() , чтобы прочитать следующие строки .

// Read rows until result is empty
while ($row = $result->fetch_array()) {
    $rows[] = $row;
}

// Read columns from each row
foreach ($rows as $row) {
    echo $row['Column_Name'];
}
...