2014-12-29 3 views
-1

Строки в запросе могут быть одним или многими (до 100 строк), запрос обновления работает нормально, если выход запроса имеет только одну строку данных, но когда на выходе есть много строк данных, будет обновляться только последняя из выбранных строк, что мне не хватает?Почему только мой запрос Обновление одного поля

Некоторые предпосылки: Сотрудник должен быть перемещен из одного места в другое, запрос на вставку записывает данные в базу данных, но оставляя дату RECEIPT пустой. Многие сотрудники могут быть освобождены из одного места в другое ... Это происходит в другой форме и отлично работает.

Теперь получатель должен принять этих сотрудников, запрос обновления выполняется в фоновом режиме после формы отправки и всего, что он делает, вводит сегодняшнюю дату ($ d) в поле $ move_receipt_date. Но, как я уже говорил ранее, только самая последняя строка осуществляется в моем запросе обновления ...

Вот выберите запрос, который получает данные и запрос на обновление, довольно прямо вперед:

<?php 
    include("../../xxx.xxx"); 
     $cxn = mysqli_connect($host,$user,$password,$dbname) 
      or die ("Couldn't connect to server."); 
     $query = "SELECT `move_id`,`empl_no`,`empl_jc_code` AS old_jc_code,`new_jc_code`,`move_date`,`move_receipt_date`,`move_reason` 
      FROM `empl_movement` 
      WHERE `new_jc_code` = '$empl_jc_code' AND `move_receipt_date` = 0"; 
     $result = mysqli_query($cxn,$query) 
      or die ("Couldn't execute query. " 
       .mysqli_error($cxn)); 

       echo "<table><br> 
     <tr> 
     <th>Move ID</th> 
     <th>Employee No</th> 
     <th>Old JC Code</th> 
     <th>New JC Code</th> 
     <th>Release Date</th> 
     <th>Receipt Date</th> 
     <th>Reason for Move</th> 
     </tr>"; 
     while($row = mysqli_fetch_assoc($result)) 
     { 
      extract($row); 
      echo "<tr>\n 
       <td>$move_id</td>\n 
       <td>$empl_idno</td>\n 
       <td>$old_jc_code</td>\n 
       <td>$new_jc_code</td>\n 
       <td>$move_date</td>\n 
       <td>$move_receipt_date</td>\n //this is the field that will be updated 
       <td>$move_reason</td>\n 
       </tr>\n"; 
     } 
     echo "</table><br>";  ?> 

    <?php 
    include("../../xxx.xxx"); 
     $cxn = mysqli_connect($host,$user,$password,$dbname) 
      or die ("Couldn't connect to server."); 
     $query = "UPDATE `empl_movement` SET `move_receipt_date` = '$d' 
        WHERE `move_id` = '$move_id'"; 
     $result = mysqli_query($cxn,$query) 
      or die ("Couldn't execute query. " 
       .mysqli_error($cxn)); 
    ?> 
+1

В запросе 'UPDATE' есть предложение WHERE, которое похоже на его фильтрацию по идентификатору. Если есть только одна соответствующая запись, она будет обновлять только одну запись. Сколько записей имеет одинаковый 'move_id'? – David

+0

Я понимаю, что мой qyery выбирает только последний из move_id, но мой запрос select может выталкивать что-либо от 1 до 100 строк, каждый из которых отличается (уникальным) move_id. –

+0

Я знаю, что моя проблема здесь, но я не знаю, как это исправить, это первый раз, когда мне приходилось делать несколько обновлений в запросе с помощью запроса select –

ответ

0

Поскольку в вашем Query вы обновляете только одно поле, т.е. empl_movement.

Смежные вопросы