이것은 내 update.php 코드입니다. 나는 이미 다른 PHP 파일을 확인했지만 아무런 문제가 없습니다. 이 코드에는 오류가 없지만 데이터베이스의 데이터를 업데이트 할 수 없습니다.
require_once "conn.php";
$conn=connect();
$db=connectdb();
$id= "";
$parcelno = "";
$items = "";
if(isset($_REQUEST['id'])){ $id= $_REQUEST['id']; }
if(isset($_REQUEST['parcel'])){ $parcel = $_REQUEST['parcel']; }
if(isset($_REQUEST['items'])){ $items = $_REQUEST['items']; }
mysql_select_db($db,$conn) or die (mysql_error()."\n");
$sql="UPDATE parcel SET parcelno='$parcelno', items='$items' where id='$id'";
$result=@mysql_query($sql) or die(mysql_error()."\n");
이것은 업데이트 양식에 사용 된 edit.php 코드입니다.
<?php
$ic = $_REQUEST["ic"];
require_once "conn.php";
$conn = connect();
$db = connectdb();
mysqli_select_db($conn,$db) or die (mysqli_error($conn)."\n");
$query_usr = "select * from parcel";
$usr = mysqli_query($conn,$query_usr) or die (mysqli_error($conn)."\n".$query_usr);
$row_usr = mysqli_fetch_assoc($usr);
?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: #CCC;
}
</style>
</head><body><center><p><a href="adminselect.php"><img src="image/header.png" width="800" height="200"></a></p></center>
<form action="update.php" method="get">
<?php
$sql = "SELECT * FROM parcel where ic = $ic";
$result1 = mysqli_query($conn,$sql);
while ($row=mysqli_fetch_assoc($result1)){
?>
<center><table border="0">
<tr>
<td colspan="3" bgcolor="#0066FF"><strong><center>Update Registration </strong></td>
</tr>
</tr>
<tr>
<td bgcolor="#0099FF">Parcel Number</td>
<td>:</td>
<td bgcolor="#FFFFFF"><input name="parcelno" type="text" id="parcelno" value="<?php echo $row["parcelno"];?>" size="50"></td>
</tr>
<tr>
<td bgcolor="#0099FF">Items</td>
<td>:</td>
<td colspan="2" bgcolor="#FFFFFF">
<p>
<label for="select"></label>
<select name="items" size="1" id="items">
<option><?php echo $row["items"];?></option>
<option>Pos Laju</option>
<option>Pos Ekspress</option>
<option>Skynet</option>
<option>GDEX</option>
<option>Nationwide Express</option>
<option>FedEx</option>
<option>UPS</option>
</select>
</p></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td colspan="2" bgcolor="#CCCCCC"> <input name="" type="submit" value="Update"></td>
</tr>
<?php }?>
</table></center>
</form></body></html>
이 문제를 거의 반나절 동안 조사했는데 아무것도 작동하지 않습니다.
두 가지 다른 변수를 사용하고 있습니다.
$parcelno
UPDATE 쿼리에서
과 $parcel = $_REQUEST['parcel'];
두 변수 가 일치 해야합니다 . 그렇지 않으면 전체 쿼리가 실패합니다.
여는 <?php
태그 바로 뒤에 오류보고를 파일 상단에 추가 하면 프로덕션 전 테스트에 도움이됩니다.
error_reporting(E_ALL);
ini_set('display_errors', 1);
현재 코드는 SQL 주입에 열려 있습니다. 준비된 명령문 또는 준비된 명령문 과 함께 PDO 를 사용하십시오 .
또한 nkchandra
의견을 인용 합니다 +1
(할 수있는 경우).
"귀하의 질문과 관련이 없지만 참고로 PHPMyAdmin은 데이터베이스가 아니라 귀하의 경우 mysql과 같은 데이터베이스와 상호 작용하는 도구입니다."
편집 : 댓글을 읽은 후 mysqli_
기능 으로 전환해야 할 것 같습니다 .
이것은 준비된 문을 사용하는 방법을 배우기 전의 빠른 수정일뿐입니다.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$DB_HOST = "xxx"; // replace with yours
$DB_USER = "xxx"; // replace with yours
$DB_PASS = "xxx"; // replace with yours
$DB_NAME = "xxx"; // replace with yours
$conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($conn->connect_errno > 0) {
die('Connection failed [' . $conn->connect_error . ']');
}
$id= "";
$parcelno = "";
$items = "";
if(isset($_REQUEST['id'])){
$id= mysqli_real_escape_string($conn,$_REQUEST['id']); }
if(isset($_REQUEST['parcel'])){
$parcelno = mysqli_real_escape_string($conn,$_REQUEST['parcel']); }
if(isset($_REQUEST['items'])){
$items = mysqli_real_escape_string($conn,$_REQUEST['items']); }
$sql="UPDATE parcel SET parcelno='$parcelno', items='$items' where id='$id'";
$result=mysqli_query($conn,$sql) or die(mysqli_error()."\n");
if (!$result)
{
throw new Exception($conn->error);
}
else { echo "Success"; }
mysqli_close($conn); // close the connection
또한 r3wt's
의견에 따라 다음을 사용할 수도 있습니다.
$result= $conn->query($sql) or die(mysqli_error()."\n");
대신에
$result=mysqli_query($conn,$sql) or die(mysqli_error()."\n");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다