php query() возвращает true, но не обновляет базу данных

#php #mysql #database

#php #mysql #База данных

Вопрос:

У меня есть форма внутри таблицы, которая динамически создает строки на основе количества записей в базе данных. Форма служит для обновления записей. Он работает в отдельном тестовом файле, который я создал для тестирования, но не тогда, когда я объединяю его с реальным файлом.

 <form role="form" id="edit_form" class="form-inline" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>?action=edit_menu" method="post"></form>

<table class="table">
    <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
            <th>Item 1</th>
            <th>Item 2</th>
            <th>Item 3</th>
            <th>Item 4</th>
            <th>Item 5</th>
            <th>Item 6</th>
            <th>Item 7</th>
            <th>Item 8</th>
        </tr>
    </thead>
    <tbody>
        <?php
            foreach($menu_items as $key => $value){
                echo "
                <tr>
                    <td>
                    <input type='text' name='name".$count."' form='edit_form' value=".$value["name"].">
                    </td>
                    <td>
                    <input type='text' name='price".$count."' form='edit_form' value=".$value["price"].">
                    </td> 
                    <td>
                    <select form='edit_form' name='item1".$count."'>
                        <option>".$value["item1"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item2".$count."'>
                        <option>".$value["item2"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item3".$count."'>
                        <option>".$value["item3"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item4".$count."'>
                        <option>".$value["item4"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item5".$count."'>
                        <option>".$value["item5"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item6".$count."'>
                        <option>".$value["item6"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item7".$count."'>
                        <option>".$value["item7"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                    <select form='edit_form' name='item8".$count."'>
                        <option>".$value["item8"]."</option>";
                        foreach ($db_items as $keys => $values) {
                            echo "<option value=".$values["name"].">".$values["name"]."</option>";
                        }
                echo "
                    </select>
                    </td>
                    <td>
                        <input type='hidden' name='id".$count."' form='edit_form' value=".$value["id"].">
                        <input type='submit' class='btn btn-xs green-haze' name='count".$count."' form='edit_form' value='Edit'>
                    </td>   
                </tr>"; 
                if ($_SERVER['REQUEST_METHOD'] == 'POST' amp;amp; $_GET['action'] == 'edit_menu') {
                    if(isset($_POST['count'.$count.''])){

                        $update_menu = "UPDATE `menu` 
                        SET `name`= '".$_POST["name".$count]."',`price`='".$_POST["price".$count]."',`item1`='".$_POST["item1".$count]."',`item2`='".$_POST["item2".$count]."',`item3`='".$_POST["item3".$count]."',`item4`='".$_POST["item4".$count]."',`item5`='".$_POST["item5".$count]."',`item6`='".$_POST["item6".$count]."',`item7`='".$_POST["item7".$count]."',`item8`='".$_POST["item8".$count]."' 
                        WHERE `id`='".$_POST["id".$count]."'";

                        if ($conn->query($update_menu)) {
                            header('Location: '.$_SERVER['PHP_SELF']);
                            die;    
                        }
                    }
                }                          
                $count  ;
            }
        ?>
    </tbody>
</table>
 

Вот таблица вместе с формой, которую я создал в ней. С подключением к базе данных проблем нет (все остальные формы работают нормально).

Ошибки нет. $conn-> query() возвращает true и выполняет любой оператор, который я помещаю в if() с ним, но все равно он не обновляет базу данных.

Я могу поделиться остальной частью скрипта, если это поможет.

Спасибо

Комментарии:

1. Действительно ли форма отправляет что-либо, вы закрываете ее при открытии. <form role="form" id="edit_form" class="form-inline" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>?action=edit_menu" method="post"></form> .

2. Вы вводите sql самостоятельно?

3. @chris85 Забавно, я этого даже не заметил.

4. @jeroen Я не «резко отклонялся» вправо, ни lol

5. «Я могу поделиться остальной частью скрипта, если это поможет». — Вы имеете в виду, что есть еще что-то??