使用PHP表单更新MySQL
我有一个PHP表单update-complaint.PHP,它有20个字段Q1、Q2-Q20,并显示了当前记录的数据——从这里开始,所有这些都运行良好。在提交时,它会转到updated-complaint.php,数据库中的字段应该更新。如果成功,它会说这样或错误 我通过修改数据对其进行了测试,提交的数据表明成功,但数据库保持不变。下面是更新的-complaint.php。有人能帮忙吗使用PHP表单更新MySQL,php,mysql,forms,Php,Mysql,Forms,我有一个PHP表单update-complaint.PHP,它有20个字段Q1、Q2-Q20,并显示了当前记录的数据——从这里开始,所有这些都运行良好。在提交时,它会转到updated-complaint.php,数据库中的字段应该更新。如果成功,它会说这样或错误 我通过修改数据对其进行了测试,提交的数据表明成功,但数据库保持不变。下面是更新的-complaint.php。有人能帮忙吗 <?php $host="localhost"; // Host name $username="us
<?php
$host="localhost"; // Host name
$username="user"; // Mysql username
$password="password"; // Mysql password
$db_name="db"; // Database name
$tbl_name="complaints"; // 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 q1='$q1', q2='$q2', q3='$q3' WHERE id='$id'";
$result=mysql_query($sql);
// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='list_records.php'>View result</a>";
}
else {
echo "ERROR";
}
?>
邮寄表格是
<?php
$host="localhost"; // Host name
$username="user"; // Mysql username
$password="password"; // Mysql password
$db_name="db"; // Database name
$tbl_name="complaints"; // Table name
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$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="100%" border="0" class="add-record" align="center" cellpadding="0" cellspacing="1">
<tr>
<td><form name="form1" method="post" action="updated-complaint.php">
请注意@Ranjith的评论,即MYSQL_*已被弃用-请改用mysqli
因为我不知道您是使用GET还是POST,所以我刚刚使用了$\u请求,但如果您担心安全性,那么使用POST和$\u POST会更好
还请注意,您应该关注安全性,要么转义数据mysqli_real_escape,要么在执行查询之前准备语句。这些都是重要的问题,但不是问题的中心——因此,这篇文章顶部的答案是正确的
我假设你有一个
<input type="hidden" name="id" value="<?= PRINT THE ID ?>" />
或类似的表单,以便将$_请求['id']提供给update-complaint.php
Database Table Description
CREATE TABLE IF NOT EXISTS `tbl_test` ( `f1` int(3) NOT NULL, `f2` varchar(50) NOT NULL, `f3` varchar(50) NOT NULL ); -- -- Dumping data for table `tbl_test` -- INSERT INTO `tbl_test` (`f1`, `f2`, `f3`) VALUES (1, 'Kathmandu', 'Nepal'), (2, 'Bhaktapur', 'Nepal'); 使用PDO!:$host="localhost"; // Host name
$user="user"; // Mysql username
$pass="password"; // Mysql password
$dbname="db"; // Database name
$tableName="complaints"; // Table name
if ($_POST){
//for mysql:
try {
//connection:
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
//prepare inserting
$STH = $DBH->prepare("UPDATE $tableName (name, address, phone) VALUES (:name,:address,:phone) WHERE id = :id");
//our placeholders, it's magic))
$data = array(
'id' => $_POST['id'],
'name' => $_POST['name'],
'address' => $_POST['address'],
'city' => $_POST['city'],
);
//and now execute our query and substitute data
//if execute is successful $result will true else false
$result = $STH->execute($data);
if ($result){
echo "UPDATED!";
}else{
echo "Error!";
}
} catch(PDOException $e) {
echo "cannot connect to database";
echo $e->getMessage();
}
}
p、 很简单。我不检查这个代码,但它必须工作
感谢收听$sql=UPDATE'$tbl_name'设置q1='$q1',q2='$q2',q3='$q3',其中id='$id';您的表id是数字还是字符id=“$id”?@Ranjith您的意思是mysqli?@Grant您应该检查更新的记录数。查询可能是语法方面的OK,但它更新了0行。您如何从$\u GET['q1']或$\u POST['q1']或$\u REQUEST['q1']获取$q1?$id也是如此。如果上述方法不起作用,请尝试在update-complaint.php中放入echo语句,其中显示$_-REQUEST['id']和$_-REQUEST['q1']等的值。请注意变量区分大小写,因此$_-REQUEST['q1']与$_-REQUEST['q1']不同。这个答案与这个问题有何关系?
List all records
$host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="test"; // Database name $tbl_name="tbl_test"; // Table name // Connect to server and select database. mysql_connect($host, $username, $password) or die("Error: to connect database server"); mysql_select_db($db_name) or die("Error: to select database"); $sql="Select * from ".$tbl_name; $result=mysql_query($sql); echo(""); echo("SNDistrictCountry"); if($result){ while($row = mysql_fetch_array($result)) { echo("".$row["f1"]. "" . $row["f2"]. "" . $row["f3"]. ""); } } else { echo "ERROR: to display record(s)"; }Update record
// Connect to server and select database. mysql_connect($host, $username, $password) or die("Error: to connect database server"); mysql_select_db($db_name) or die("Error: to select database"); // update data in mysql database $v1=1; $v2='Banepa'; $sql="UPDATE ".$tbl_name." SET f2='".$v2."' WHERE f1=".$v1; echo ($sql); $result=mysql_query($sql); if($result){ echo "Successful"; echo ""; echo "View result"; } else { echo "ERROR: to update record"; }
$host="localhost"; // Host name
$user="user"; // Mysql username
$pass="password"; // Mysql password
$dbname="db"; // Database name
$tableName="complaints"; // Table name
if ($_POST){
//for mysql:
try {
//connection:
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
//prepare inserting
$STH = $DBH->prepare("UPDATE $tableName (name, address, phone) VALUES (:name,:address,:phone) WHERE id = :id");
//our placeholders, it's magic))
$data = array(
'id' => $_POST['id'],
'name' => $_POST['name'],
'address' => $_POST['address'],
'city' => $_POST['city'],
);
//and now execute our query and substitute data
//if execute is successful $result will true else false
$result = $STH->execute($data);
if ($result){
echo "UPDATED!";
}else{
echo "Error!";
}
} catch(PDOException $e) {
echo "cannot connect to database";
echo $e->getMessage();
}
}