2013-04-08 42 views
6

Tôi có một tập lệnh php Tôi đang cố gắng để có được làm việc mà tôi về cơ bản chỉ cần rút ra từ một hướng dẫn và thay đổi cho phù hợp với nhu cầu của tôi. Đây là nỗ lực đầu tiên của tôi tại php vì vậy xin vui lòng đi dễ dàng với tôi.php cập nhật sql từ mẫu

Tôi có 3 file

  1. list_records.php
  2. update.php
  3. update_ac.php

List_records đọc dữ liệu từ một bảng trong mysql. bảng trong list_records có một hàm chỉnh sửa sẽ đưa bạn đến update.php nơi nó hiển thị dữ liệu trong bảng db.

Update.php có nút gửi có nghĩa là cập nhật mysql bằng cách sử dụng update_ac.php với thông tin bạn đã thay đổi khi sử dụng trường id trong url bằng $ _GET ['id].

Tôi biết kịch bản này rất cởi mở với việc tiêm thuốc nhưng tôi dự định chỉ sử dụng nó trong môi trường địa phương, nó sẽ không được tiếp xúc với internet và chỉ bản thân tôi và một người khác sẽ sử dụng trang này để không thực sự là một vấn đề.

Dù sao, tôi đã xác nhận một vài điều: -

  1. id không được nhặt sử dụng $ _GET, tôi đặt trong một tiếng vang và nó in nó ra trên trang update.php.
  2. tôi có thể chạy lệnh update trong php và thay đổi giá trị nhưng nó sẽ không làm việc khi sử dụng $ _GET [id]

bất cứ ai có thể chỉ cho tôi đi đúng hướng?

đây là 3 tác phẩm với các chi tiết kết nối db thay đổi

list_records.php

<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

được bạn nhận được yêu cầu tại $ hàng [ 'khách hàng']; ? –

+1

Mã của bạn để bạn mở các cuộc tấn công SQL injection. Hãy xem xét trường hợp của [bobby tables] (http://bobby-tables.com/) cho các ví dụ. Ngoài ra, vì các hàm 'mysql_ *' không được chấp nhận, hãy xem xét việc sử dụng MySQLi hoặc [PDO] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers) – jcbwlkr

Trả lời

8

của bạn upda te truy vấn nên

// 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

Mã này dễ bị tấn công bởi SQL injection. – epicdev

+8

@flov thậm chí bạn có nhìn vào câu hỏi không? ông giải thích rằng ông sẽ chỉ sử dụng nó ở địa phương và rằng đây không phải là một vấn đề .. – Daanvn

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

dòng này là sai bạn cập nhật nó với STRING thay vì số nguyên. Bạn nên đặt giá trị

$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

Cảm ơn bạn Mahendra, mà đã làm việc một điều trị.Nhờ tất cả mọi người cho lời khuyên của bạn quá, nhiều đánh giá cao :) – themoose

Các vấn đề liên quan