2013-04-08 20 views
6

Bir php komut dosyası var Temelde sadece bir öğretici tarafından çektiğim ve gereksinimlerime uygun şekilde değiştirdiğim bir çalışma yapmaya çalışıyorum. Bu benim php'deki ilk denememdir, lütfen benim için kolay ol. php güncelleme sql formdan

Ben

List_records MySQL tablodan veri okuma update_ac.php

  • update.php 3 dosya

    1. list_records.php
    2. var. list_records'daki tablonun, verileri db tablosunda görüntülediği update.php dosyasına götüren bir düzenleme işlevi vardır.

      Update.php, update_ac.php kullanarak mysql değerini $ _GET ['id] kullanarak url'deki id alanını kullanarak değiştirdiğiniz bilgilerle güncellemeyi amaçlayan bir gönderme düğmesine sahiptir.

      Bu betiğin slq enjeksiyonlarına çok açık olduğunu biliyorum, ancak bunu yalnızca yerel bir ortamda kullanmayı planlıyorum, internete maruz kalmayacağım ve sadece kendim ve bir başkası bu sayfayı kullanmayacak gerçekten bir sorun.

      Neyse, bir kaç şey teyit ettik: -

      1. id $ _GET kullanılarak yakalandı olsun demek, ben bir yankı koymak ve onu update.php sayfasında yazdırılır. $ _GET [id] kullanırken
      2. i php ve değişim değerlerinin içinde güncelleme komutunu çalıştırabilirsiniz ama alışkanlık çalışmak

      kimse doğru yönde işaret edebilir? Burada

      <title>Ports</title> 
      </head> 
      
      <?php 
      
      // Connect to server and select database. 
      mysql_connect("localhost", "username", "passsword")or die("cannot connect"); 
      mysql_select_db("porting")or die("cannot select DB"); 
      
      
      $sql="SELECT * FROM ports"; 
      $result=mysql_query($sql); 
      
      ?> 
      <body> 
      
      
      <table width="1200" border="1" cellspacing="1" cellpadding="0"> 
      <tr> 
      <td> 
      <table width="1200" border="1" cellspacing="1" cellpadding="3"> 
      <tr> 
      <td colspan="50"><strong>Pending Port Requests 2</strong> </td> 
      </tr> 
      
      <tr> 
      <td align="center"><strong>Customer</strong></td> 
      <td align="center"><strong>Number</strong></td> 
      <td align="center"><strong>Type</strong></td> 
      <td align="center"><strong>Completed</strong></td> 
      <td align="center"><strong>Update</strong></td> 
      </tr> 
      
      <?php 
      while($rows=mysql_fetch_array($result)){ 
      ?> 
      <tr> 
      <td><?php echo $rows['Customer']; ?></td> 
      <td><?php echo $rows['Number']; ?></td> 
      <td><?php echo $rows['Type']; ?></td> 
      <td><?php echo $rows['Completed']; ?></td> 
      <td align="center"><a href="update.php?id=<?php echo $rows['id']; ?>">update</a></td> 
      </tr> 
      
      <?php 
      } 
      ?> 
      
      </table> 
      </td> 
      </tr> 
      </table> 
      </body> 
      </html> 
      

      update.php

      <title>update</title> 
      </head> 
      
      <?php 
      // Connect to server and select database. 
      mysql_connect("localhost", "username", "password")or die("cannot connect"); 
      mysql_select_db("porting") or die("cannot select DB"); 
      
      // get value of id that sent from address bar 
      $id=$_GET['id']; 
      
      
      
      // Retrieve data from database 
      $sql="SELECT * FROM porting.ports WHERE id = '$id'"; 
      $result=mysql_query($sql); 
      $rows=mysql_fetch_array($result); 
      ?> 
      <body> 
      
      
      <table width="1200" border="0" cellspacing="1" cellpadding="0"> 
      <tr> 
      <form name="form1" method="post" action="update_ac.php"> 
      <td> 
      <table width="100%" border="0" cellspacing="1" cellpadding="0"> 
      <tr> 
      <td>&nbsp;</td> 
      <td colspan="6"><strong>Update Porting Details</strong> </td> 
      </tr> 
      <tr> 
      <td align="center">&nbsp;</td> 
      <td align="center">&nbsp;</td> 
      <td align="center">&nbsp;</td> 
      <td align="center">&nbsp;</td> 
      </tr> 
      <tr> 
      <td align="center">&nbsp;</td> 
      <td align="center"><strong>Customer</strong></td> 
      <td align="center"><strong>Number</strong></td> 
      <td align="center"><strong>Type</strong></td> 
      <td align="center"><strong>Completed</strong></td> 
      </tr> 
      <tr> 
      <td>&nbsp;</td> 
      <td align="center"> 
      <input name="Customer" type="text" id="Customer" value="<?php echo $rows['Customer']; ?>"size= "15"/> 
      </td> 
      <td align="center"> 
      <input name="Number" type="text" id="Number" value="<?php echo $rows['Number']; ?>" size="15"/> 
      </td> 
      <td align="center"> 
      <input name="Type" type="text" id="Type" value="<?php echo $rows['Type']; ?>" size="15"/> 
      </td> 
      <td align="center"> 
      <input name="Comments" type="text" id="Completed" value="<?php echo $rows['Comments']; ?>" size="15"/> 
      </td> 
      <tr> 
      </table> 
      <input name="id" type="hidden" id="id" value="<?php echo $rows['id']; ?>"/> 
      <input type="submit" name="Submit" value="Submit" /></td> 
      <td align="center">&nbsp;</td> 
      </td> 
      </form> 
      </tr> 
      </table> 
      </body> 
      </html> 
      

      update_ac.php
      <?php 
      // Connect to server and select database. 
      mysql_connect("localhost", "username", "password")or die("cannot connect"); 
      mysql_select_db("porting")or die("cannot select DB"); 
      
      // update data in mysql database 
      $sql="UPDATE ports SET Customer='Customer', Number='Number' WHERE id='id'" or die ("this stuffed up"); 
      $result=mysql_query($sql) or die ("this stuffedup"); 
      
      
      // if successfully updated. 
      if($result){ 
      echo "Successful"; 
      echo "<BR>"; 
      echo "<a href='list_records.php'>View result</a>"; 
      } 
      
      else { 
      echo "ERROR"; 
      } 
      
      ?> 
      
  • +0

    gerekli alıyorsanız değeri koymalıyız satırlar [ 'Müşteri']; ? –

    +1

    Kodunuz SQL enjeksiyon saldırılarına açık bırakıyor. Örnekler için [bobi tabloları] (http://bobby-tables.com/) örneğine bakın. Ayrıca, 'mysql_ *' fonksiyonları kullanımdan kaldırıldıkça, lütfen MySQLi veya [PDO] 'ya bakın (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers) – jcbwlkr

    cevap

    8

    list_records.php

    değişmiş db bağlantı ayrıntılarıyla 3 dosyalardır Sizin sayfamız te sorgu bu hat STRING yerine tamsayı ile güncelleyin yanlış

    // update data in mysql database 
    $sql="UPDATE ports SET Customer='".$_POST['Customer']."', Number='".$_POST['Number']."' WHERE id='".$_POST['id']."'"; 
    
    $result=mysql_query($sql)or 
    die ("this stuffedup"); 
    
    +1

    Bu kod, SQL enjeksiyonuna karşı savunmasızdır. – epicdev

    +8

    @flov soruya bile baktın mı? Sadece yerel olarak kullanacağını ve bunun bir sorun olmadığını açıkladı .. – Daanvn

    0
    $sql="UPDATE ports SET Customer='Customer', Number='Number' WHERE id='id'" ; 
    

    olmalıdır. Sen $ at

    $sql="UPDATE ports SET Customer='Customer', Number='Number' WHERE id='".intval($_REQUEST['id'])."'" 
    
    1
    1.You have to pass a id when clicking a submit in update.php by 
    <a href="update_ac.php?id=<?php echo $rows['id']; ?>"><input type="submit" name="submit" value="Submit"></a>. 
    
    2.The line $id=$_GET['id'] is used in update_ac.php before insert query. 
    
    +1

    Teşekkür ederim Mahendra, bu bir muamele yaptı.Önerileriniz için herkese teşekkürler, çok takdir ediyorum :) – themoose