2013-04-17 6 views
19

Я хочу обновить один столбец во всех строках одной таблицы, может кто-нибудь дать мне руку, как обновить таблицу? существует только одно поле ввода, которое должно обновлять все значения строк. этот код не работает, и я знаю, что что-то не так в индексе и массиве.Обновление одного столбца во всех строках таблицы

<?php 
    <form method="post" dir="rtl" name="maxcharfield" >      
     <textarea onKeyDown="textCounter(this,'progressbar1',300)" 
      onKeyUp="textCounter(this,'progressbar1',300)" 
      onFocus="textCounter(this,'progressbar1',300)" 
      style="font-family:'B_yekan';" id="text" name="text" rows="0" cols="0" class="required"></textarea> 
     <div class="cleaner h10"></div> 

     <div style="font-family:'B_yekan';" dir="rtl" id="progressbar1" class="progress" ></div> 
     <script>textCounter(document.getElementById("maxcharfield"),"progressbar1",100)</script>  

     <input class="styled-button-8" style="margin-top:10px; float:right; margin-right:50px; font-size: 14px; padding: 5px 14px;" type="submit" value="save" name="Submit" /> 
     <input style="font-family:'B_yekan';" type="reset" value="reset" id="reset" name="reset" class="submit_btn float_l" /> 

    </form> 

<?php 
// for updating Check if button name "Submit" is active, do this 
if(isset($_POST['Submit']) && $_POST['Submit'] == 'save') 
    { 
     $sql1="UPDATE `".$tbl_name."` SET `board`='".$_REQUEST['text']."' "; 
          $result1=mysql_query($sql1); 
    } 

    } 
?> 

ответ

43

Вы слишком усложняете решение. Чтобы обновить каждую запись, подход, который вы пытаетесь сделать, следующий:

  1. Выбрать все записи.
  2. Получите идентификатор для каждой записи.
  3. Петля через удостоверения личности.
  4. Обновите каждую запись по этому идентификатору.

Синтаксис UPDATE имеет намного более простой способ сделать это. Вам не нужно указывать предложение WHERE в заявлении UPDATE. Без этого пункта, он по умолчанию будет обновлять каждую запись в таблице:

UPDATE TableName SET `board`='value' 

Также, пожалуйста, помните, что у вас есть SQL injection уязвимость в коде. Используя $_REQUEST['text'] непосредственно в вашем SQL-запросе, вы разрешаете любому пользователю отправлять SQL-код в ваш запрос. Затем ваш код выполняет все, что они вам отправляют. Это может позволить им испортить или удалить ваши данные, даже получить административный доступ к вашему серверу.

Для начала прекратите использовать функции mysql_*. PHP устарел, и они больше не должны использоваться. Для них есть a mysqli_ replacement. В дополнение к этому, используйте the mysqli_real_escape_string() function для дезинфекции ваших входов перед их использованием в SQL-запросе. И, наконец, используйте prepared statements вместо непосредственного объединения значений в строку SQL.

+0

спасибо, что я сделал то, что вы сказали, но все же я не могу не обновить –

+0

@mohamad: Можете ли вы обновить исходный вопрос с помощью нового кода? Любое количество вещей может быть ошибочным. – David

+0

Я обновил код выше –

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