web-dev-qa-db-fra.com

Mise à jour d'une colonne dans toutes les lignes d'un tableau

Je veux mettre à jour une même colonne dans toutes les lignes d'un tableau. Quelqu'un peut-il m'aider à mettre à jour le tableau? il n'y a qu'un seul champ de saisie qui devrait mettre à jour la valeur de toutes les lignes. ce code ne fonctionne pas et je sais qu'il y a quelque chose de mal dans l'index et le tableau.

<?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);
     }

    }   
?>
22
Mohammad_Hosseini

Vous compliquez trop la solution. Afin de mettre à jour chaque enregistrement, l'approche que vous essayez d'adopter est la suivante:

  1. Sélectionnez tous les enregistrements.
  2. Obtenez l'ID de chaque enregistrement.
  3. Parcourez les ID.
  4. Mettez à jour chaque enregistrement avec cet ID.

La syntaxe UPDATE a un moyen beaucoup plus simple de le faire. Vous n'avez pas besoin de fournir une clause WHERE à une instruction UPDATE. Sans cette clause, il mettra à jour par défaut chaque enregistrement de la table:

UPDATE TableName SET `board`='value'

Aussi , veuillez noter que vous avez une vulnérabilité injection SQL dans votre code. En utilisant $_REQUEST['text'] Directement dans votre requête SQL, vous autorisez tout utilisateur à envoyer du code SQL à votre requête. Votre code exécute ensuite tout ce qu'il vous envoie. Cela pourrait leur permettre de corrompre ou de supprimer vos données, voire d'obtenir un accès administratif à votre serveur.

Pour commencer, veuillez cesser d'utiliser les fonctions mysql_*. PHP a déprécié ceux-ci et ils ne devraient plus être utilisés. Il y a n remplacement mysqli_ pour eux. En plus de cela, utilisez la fonction mysqli_real_escape_string() pour nettoyer vos entrées avant de les utiliser dans une requête SQL. Enfin, utilisez instructions préparées au lieu de concaténer directement les valeurs dans votre chaîne SQL.

52
David