массив в запросе возвращает только результат первого значения - PullRequest
0 голосов
/ 21 сентября 2018

Я изучаю PHP, поэтому я пытаюсь выполнять некоторые упражнения.Теперь я хотел загрузить массив в формате JSON в свой скрипт и вставить этот массив в запрос.Чтобы проверить это, я использовал три фиксированных значения в массиве.У меня проблема в том, что возвращается только результат первого элемента массива, а не все три.Я думал о получении нескольких значений неправильно, но с фиксированным условием, обеспечивающим более одного результата, он работает нормально.Я также подумал, что, возможно, массив передан неверно, но когда я распечатал его из скрипта, я получил его полностью возвращенным так:

(
    [0] => 141
    [1] => 145
    [2] => 54
)

Кто-нибудь знает, где он неверен?

Мой сценарий:

<?php 
    include 'DBConfig.php';

    $conn = new mysqli($servername, $username, $password, $dbname);

    if(isset($_POST['arrayList'])){

        $JSON_Received = $_POST['arrayList'];
        $obj = json_decode($JSON_Received, true);

        $matches = implode(',', $obj);

        $query = "SELECT * FROM TestTable WHERE id IN ('$matches')";

        $result = mysqli_query($conn, $query);

        while($row = mysqli_fetch_assoc($result)) {
            $array[] = $row;
        }
    }

    header('Content-Type:Application/json');
    echo json_encode($array);
    mysqli_close($conn);
?>

1 Ответ

0 голосов
/ 21 сентября 2018

Когда вы пишете WHERE id IN ('$matches'), результат будет WHERE id IN ('141, 145, 54'), поэтому у вас есть STRING и идентификатор INTEGER.

Попробуйте заменить:

$matches = implode(',', $obj);
$query = "SELECT * FROM TestTable WHERE id IN ('$matches')"; 

на

$matches = implode(',', $obj);
$query = "SELECT * FROM TestTable WHERE id IN ($matches)";

Или

$query = "SELECT * FROM TestTable WHERE id IN (".implode(',', $obj).")";`

Таким образом, у вас будет WHERE id IN (141, 145, 54), список INT.

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