这是我的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>
我研究了这个问题差不多半天,没有任何作用:/
答案 0 :(得分:5)
您正在使用两个不同的变量:
您的UPDATE查询中的 $parcelno
和$parcel = $_REQUEST['parcel'];
两个变量必须匹配。如果没有,那么整个查询都会失败。
在打开<?php
标记后立即将错误报告添加到文件顶部,这有助于在预生产测试期间。
error_reporting(E_ALL);
ini_set('display_errors', 1);
您目前的代码向SQL injection开放。使用prepared statements或PDO与prepared statements。
另外,我在评论nkchandra
中引用+1
(如果可以的话):
&#34;与您的问题无关,但是仅供参考,PHPMyAdmin不是一个数据库,而是一个与您的案例中的mysql进行交互的工具&#34;
修改:阅读完评论后,您似乎需要切换到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");
答案 1 :(得分:0)
查询中的parse变量存在问题。试试这个:
$sql="UPDATE parcel SET parcelno='" . $parcelno . "', items='" . $items . "' where id='" . $id . "'";
答案 2 :(得分:0)
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL ^ E_NOTICE);
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='".$parcel."', items='".$items."' where id='".$id."'";
$result=mysql_query($sql) or die(mysql_error()."\n");
?>
试试这个。