これは私の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>
私はこの問題をほぼ半日調査しましたが、何も機能しません:/
2つの異なる変数を使用しています。
$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]
コメントを追加