【发布时间】:2017-04-15 17:07:47
【问题描述】:
我已经按照在线教程使用 CRUD。然而,我来到了更新部分,我在 GET 函数和 fetch_row 方面遇到了一些问题。
未定义变量:第 69 行 C:\xampp\htdocs\Website\editsuppliers.php 中的 fetched_row 是一条错误消息,下一条是未定义索引:editsuppliers
这是我目前所拥有的。
<?php
include_once 'connect.php' ;
if(isset($_GET['editsuppliers']))
{
$sql_query="SELECT * FROM suppliers WHERE SuppliersID=".$_GET['editsuppliers'];
$result_set=mysql_query($sql_query);
$fetched_row=mysql_fetch_array($result_set);
}
if(isset($_POST['btn-update']))
{
// variables for input data
$SupplierID = $_POST['SupplierID'];
$SupplierName = $_POST['SupplierName'];
$Address = $_POST['Address'];
$EmailAddress = $_POST['EmailAddress'];
$PhoneNumber = $_POST['PhoneNumber'];
// variables for input data
// sql query for update data into database
$sql_query = "UPDATE suppliers SET SupplierID='$SupplierID',SupplierNamee='$SupplierName',Address='$Address',EmailAddress='$EmailAddress',PhoneNumber'$PhoneNumber' WHERE SupplierID=".$_GET['editsuppliers'];
// sql query for update data into database
// sql query execution function
if(mysql_query($sql_query))
{
?>
<script type="text/javascript">
alert('Data Updated Successfully');
window.location.href='suppliers.php';
</script>
<?php
}
else
{
?>
<script type="text/javascript">
alert('error occured while updating data');
</script>
<?php
}
// sql query execution function
}
if(isset($_POST['btn-cancel']))
{
header("Location: suppliers.php");
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Edit Suppliers</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<center>
<div id="header">
<div id="content">
<label</label>
</div>
</div>
<div id="body">
<div id="content">
<form method="post">
<table align="center">
<tr>
<td><input type="text" name="SupplierID" placeholder="Supplier ID" value="<?php echo $fetched_row['SupplierID']; ?>" required /></td>
</tr>
<tr>
<td><input type="text" name="SupplierName" placeholder="Supplier Name" value="<?php echo $fetched_row['SupplierName']; ?>" required /></td>
</tr>
<tr>
<td><input type="text" name="Address" placeholder="Address" value="<?php echo $fetched_row['Address']; ?>" required /></td>
</tr>
<tr>
<td><input type="text" name="EmailAddress" placeholder="Email Address" value="<?php echo $fetched_row['EmailAddress']; ?>" required /></td>
</tr>
<tr>
<td><input type="text" name="PhoneNumber" placeholder="Phone Number" value="<?php echo $fetched_row['PhoneNumber']; ?>" required /></td>
</tr>
<tr>
<td>
<button type="submit" name="btn-update"><strong>UPDATE</strong></button>
<button type="submit" name="btn-cancel"><strong>Cancel</strong></button>
</td>
</tr>
</table>
</form>
</div>
</div>
</center>
</body>
</html>
【问题讨论】:
-
首先,由于 mysql_* 在 PHP 5.5 中已被弃用(请参阅 PHP doc),您应该真的考虑使用 PPS : Prepared Parameterized Statements。这将有助于Preventing SQL injection
-
请在页面顶部使用
error_reporting(E_ALL); ini_set('display_errors', 1);并在需要使用它们之前回显$_GET和$_POSTvars,看看返回了什么(缺少任何其他东西?)我很确定$sql_query="SELECT * FROM suppliers WHERE SuppliersID=".$_GET['editsuppliers'];会给你带来麻烦... -
您的更新查询缺少电话号码列的 = 符号。此外,这个脚本不能为了你自己而上线
-
这也是一个错字问题。检查真正的错误会在查询中抛出一些关于它的信息