希望这是正确的选择。目前,我正在开展一个有趣的小项目,同时尝试自学一些PHP。我创建了一个小小的“审计”。与我的网站相关联的页面,允许我将新数据输入到预先存在的SQL数据库,搜索该数据并更新该数据。现在,添加和搜索工作没有故障。唯一的问题是'更新'函数没有...它没有错误(实际上它说它是成功的)并且它都应该如何工作,除了它实际上并没有#39;更新表中的信息。
我在过去的2-3天里一直在阅读StackOverflow,教程指南,论坛以及自己玩部分代码,其中没有一部分甚至提供了一个遥控器'回答。
我有2个相关的页面,' update.php'页面和' update_ac.php'在点击'提交'之后运行脚本的页面在表格上,代码如下:
update.php
<?php
$host="localhost"; // Host name
$username="member2"; // Mysql username
$password="********"; // Mysql password
$db_name="audits"; // Database name
$tbl_name="data"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get value of id that sent from address bar
$id=$_GET['id'];
// Retrieve data from database
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<table width="400" 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> </td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
</tr>
<tr>
<td align="center"> </td>
<td align="center"><strong>Barcode</strong></td>
<td align="center"><strong>Product</strong></td>
<td align="center"><strong>Category</strong></td>
<td align="center"><strong>Assigned</strong></td>
<td align="center"><strong>Notes</strong></td>
</tr>
<tr>
<td> </td>
<td align="center">
<input name="barcode" type="text" id="barcode" value="<? echo $rows['barcode']; ?>">
</td>
<td align="center">
<input name="product" type="text" id="product" value="<? echo $rows['product']; ?>" size="15">
</td>
<td align="center">
<select name="category" id="category" value="<? echo $rows['category']; ?>">
<option value="Hardware">Hardware</option>
<option value="Software">Software</option>
<option value="Furniture">Furniture</option>
</select>
</td>
<td align="center">
<select name="assigned" id="assigned" value="<? echo $rows['assigned']; ?>">
<option value="name1">Name 1</option>
<option value="name1">Name 2</option>
<option value="name1">Name 3</option>
<option value="name1">Name 4</option>
</select>
</td>
<td align="center">
<input name="notes" type="text" id="notes" value="<? echo $rows['notes']; ?>" size="15">
</td>
</tr>
<tr>
<td> </td>
<td>
<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>">
</td>
<td align="center">
<input type="submit" name="Submit" value="Submit">
</td>
<td> </td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<?php
// close connection
mysql_close();
?>
update_ac.php
<?php
$host="localhost"; // Host name
$username="member2"; // Mysql username
$password="********"; // Mysql password
$db_name="audits"; // Database name
$tbl_name="data"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// update data in mysql database
$sql="UPDATE $tbl_name SET barcode='$barcode', product='$product', category='$category', assigned='$assigned', notes='$notes' WHERE id='$id'";
$result=mysql_query($sql);
// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='assets.php'>View Changes</a>";
echo "<BR>";
echo "<a href='login-home.php'>Home</a>";
}
else {
echo "ERROR";
}
?>
现在,我确实从older site中取出了这个&#39;更改了&#39;为了满足自己的需要而无济于事。我甚至完成了他们的教程(包括他们的数据库)的完整复制/粘贴,甚至没有用,这似乎表明某些地方的代码有问题。提前谢谢。
答案 0 :(得分:1)
我在第二个脚本中没有看到设置这些变量的任何内容。表单值不会自动传递给变量,您必须从$ _POST数组变量中检索它们,这就是您在第一页上的表单中使用'post'方法的原因。你这样做:
if (isset($_POST['barcode']) && $_POST['barcode'] != "") {
$barcode = $_POST['barcode'];
} else {
echo "'barcode' input is not set.";
}
您实际上并不需要if语句,但它对于故障排除和一般错误预防很有帮助。它只是确保该字段既设置又不为空。
(我会解释数组,但看起来你已经掌握了它们基于你的循环和$ rows变量。如果你需要帮助,请告诉我,我会给你一个简短的解释并链接你到教程。)
答案 1 :(得分:0)
要更新您的值,您应该在update_ac.php中使用$ _POST [SELECT的名称]
<?php
$host="localhost"; // Host name
$username="member2"; // Mysql username
$password="********"; // Mysql password
$db_name="audits"; // Database name
$tbl_name="data"; // Table name
// Connect to server and select database.
$con=mysqli_connect("$host","$username","$password","$db_name") or die("cannot connect");
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql="SELECT * FROM questions";
$result =mysqli_query($con,$sql) or die(mysqli_error($con));
mysqli_query($con,"UPDATE SET barcode='$_POST[barcode]' ,product='$_POST[product]' ,category='$_POST[category]' ,assigned='$_POST[assigned]' ,notes='$_POST[notes]' WHERE id='$_POST[id]' ");
mysqli_close($con);
?>
此代码只能将其复制并粘贴到update_ac.php
中