簡體   English   中英

使用PHP Edit表單更新數據需要幫助

[英]Updating data using PHP Edit form help needed

我正在嘗試使用鏈接到后續ID的正確信息來更新我的表格。 我將發布代碼,以便大家一起看看。

這是我的問題:一旦我提交了包含數據庫中所有詳細信息的表單,一切都將成功進行。 但是,當我單擊“提交”時,它會重定向到另一個名為update_ac.php的頁面。 一切正常,除了mysql表中的數據不更新。

我想知道是否有人可以看一下代碼以了解他們的想法:非常感謝,反饋也很棒。 PS我不是最好的PHP程序員,還在學習!

因此,這里是edit.php-用戶在其中編輯其信息的位置:

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
$adminid = $_GET['id'];

//CONNECTION CODE WAS HERE

// 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");


echo("Logged In As: $UserName");
echo "<br />";
echo("We are editing Data for ID: $adminid");
echo "<br />";
echo "<a href=test.php>Go back to panel</a>";

$id=$_GET['id'];
// Retrieve data from database 
$sql="SELECT * FROM admin WHERE id='$id'";
$result=mysql_query($sql) or die(mysql_error());

$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>&nbsp;</td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center"><strong>Name</strong></td>
<td align="center"><strong>Main Content</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="center"><input name="name" type="text" id="name" value="<? echo $rows['name']; ?>"></td>
<td align="center"><input name="mainContent" type="text" id="mainContent" value="<? echo $rows['mainContent']; ?>" size="15"></td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</td>
</tr>
</table>
</td>
</form>
</tr>
</table>

<?
mysql_close();
 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Edit Page</title>
</head>

<body>
<h2>Edit Page (<?php echo ("$adminid"); ?>)</h2>
</body>
</html>

這是update_ac.php:

// 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 

$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];

$sql="UPDATE admin SET name='$firstName', mainContent='$mainText' WHERE id='$id'";
$result=mysql_query($sql) or die(mysql_error());;

// if successfully updated. 
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='test.php'>Back to panel</a>";
}

else {
echo "ERROR";
}

?>

好的人在這里編輯:

如果在Update_ac.php中,將以下行更改為此:

$sql="UPDATE admin SET name='$firstName', mainContent='$mainText' WHERE id='1'";

現在信息已更新,因此意味着我的ID變量出了點問題

看起來是數據庫轉義的典型遺漏。 您需要在sql查詢中連接的任何字符串上應用mysql_real_escape_string

惰性版本是:

$_POST = array_map("mysql_real_escape_string", $_POST);
$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];

否則,您通常會收到無效的語法錯誤。 使用print mysql_error(); 查詢后找出您的情況出了什么問題。

另請參見每個數據庫的字符串轉義,或在上讀取以減少不太友好的數據庫交互。

乍一看,這是因為您使用的是變量而不是$ _POST變量

$sql="UPDATE admin SET name='$firstName', mainContent='$mainText' WHERE id='$id'";

應該是帶有表單字段名稱的post變量

$sql="UPDATE admin SET name='$_POST['firstName'], mainContent='$_POST['mainText']' WHERE id='$_POST['id']'";

如果然后將$ id變量放在表單的隱藏輸入字段中,則該文件也會將其拾取。

只是一個簡單的回答,因為我要出去吃午飯了。

這只是update_ac.php中的語法錯誤

您在以下行中使用了2個分號

$result=mysql_query($sql) or die(mysql_error());;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM