Иначе элемент не возвращает правильный результат - PullRequest
0 голосов
/ 17 апреля 2020

Я создал оператор выбора, используя php, чтобы возвращать результаты в HTML на основе пользовательского ввода. Обратная связь возвращается на основании полей ввода, соответствующих полям в заполненной вручную таблице. Оператор выбора должен возвращать самый высокий идентификатор. Форма вставляет данные в таблицу «принятия». Затем результаты возвращают строку из таблицы 'dogs' на основе полей, приведенных ниже в таблице 'принятие'.

<?php
$connect = mysqli_connect("localhost", "root", "", "ncdr_first", "3308");

$sql = "SELECT dogs.name, dogs.breed, dogs.age, dogs.sex, dogs.image, adoption.adoption_id 
        FROM dogs 
            INNER JOIN adoption ON dogs.adultRadio = adoption.adultRadio 
                AND dogs.child = adoption.child 
                AND dogs.petRadio = adoption.petRadio 
                AND dogs.pet = adoption.pet 
                AND dogs.activity = adoption.activity 
                AND dogs.home = adoption.home 
                AND dogs.environment = adoption.environment
        ORDER BY adoption.adoption_id DESC 
        LIMIT 0, 1";

$result = mysqli_query($connect, $sql);

?>

Результаты затем отображаются в таблице в разделе HTML раздела page.

<div class="table">
    <center><table id="feedback">
            <tr>
                <th>Name</th>
                <th>Breed</th>
                <th>Age</th>
                <th>Sex</th>
                <th>Image</th>
            </tr>
    <?php
    if($result->num_rows > 0){
        while($row = $result->fetch_assoc()){
    ?>
        <tr>
            <td><?php echo $row["name"];?></td>
            <td><?php echo $row["breed"];?></td>
            <td><?php echo $row["age"];?></td>
            <td><?php echo $row["sex"];?></td>  
            <td><img src="<?php echo $row["image"];?>"/></td>
        </tr>
    <?php
        }

    } else {
        echo "Unfortunately you have not been a match for any of our furry friends! Please try again soon.";
    }   
    ?>
    </center></table>


CREATE TABLE dogs (dog_id int, name varchar, breed varchar, age varchar, sex 
varchar, adultRadio varchar, child varchar, petRadio varchar, pet varchar, 
activity varchar, home varchar, environment varchar, image varchar ); 

CREATE TABLE adoption (adoption_id int, name varchar, address varchar, 
adultRadio varchar, child varchar, petRadio varchar, pet varchar, activity 
varchar, home varchar, environment varchar, image varchar );

Однако, если я введу данные в таблицу «принятие», которые не соответствуют ни одной из строк в таблице «собак», он вернет строку, которая была последней, вместо заявление в остальном. У кого-нибудь есть советы, как это исправить?

image

SQL результат запроса

1 Ответ

0 голосов
/ 17 апреля 2020

Глядя на код SQL, он вернет последний идентификатор, который не совпадает с последним. Вы можете выбрать только последнюю вставку со следующим,

$sql = "SELECT dogs.name, dogs.breed, dogs.age, dogs.sex, dogs.image, adoption.adoption_id 
        FROM dogs 
            INNER JOIN adoption ON dogs.adultRadio = adoption.adultRadio 
                AND dogs.child = adoption.child 
                AND dogs.petRadio = adoption.petRadio 
                AND dogs.pet = adoption.pet 
                AND dogs.activity = adoption.activity 
                AND dogs.home = adoption.home 
                AND dogs.environment = adoption.environment
        WHERE adoption_id = (SELECT MAX(adoption_id) FROM adoption)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...