为此,我有 2 个 PHP 文件。第一个 update.php 包含用于更新行的用户表单。下一个 update_ac 包含执行此更新的编码。问题是我没有得到正确的输出
<?php
$host = "localhost"; // Host name
$username = "root"; // Mysql username
$password = ""; // Mysql password
$db_name = "yumyum"; // Database name
$tbl_name = "food"; // 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'];
$id = $_REQUEST['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 align="center"><strong>name</strong></td>
<td align="center"><strong>price</strong></td>
<td align="center"><strong>Quantity</strong></td>
</tr>
<td align="center">
<input name="name" type="text" id="name" value="<? echo $line['name']; ?>">
</td>
<td align="center">
<input name="price" type="text" id="price" value="<? echo $line['price']; ?>" size="15">
</td>
<td align="center">
<input name="Quantity" type="text" id="Quantity" value="<? echo $line['Quantity']; ?>" size="15">
</td>
<td>
<input name="id" type="hidden" id="id" value="<? echo $line['id']; ?>">
</td>
<td align="center">
<input type="submit" name="Submit" value="Submit">
</td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<?php
// close connection
mysql_close();
?>
**This is update_ac.php**
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="yumyum"; // Database name
$tbl_name="food"; // 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 name='$name', price='$price', Quantity='$Quantity' WHERE id='$id'";
$result=mysql_query($sql);
// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='yumhome.php'>View result</a>";
}
else {
echo "ERROR";
}
?>
最佳答案
看来你需要解决不同的问题。
一个又一个……
1) 尝试使用所有值正确显示表单。如果 $rows
不起作用,请在 mysq_fetch_array...
之后执行 print_r($rows);
并告诉我们您看到了什么。
2) 如果表格显示正确,请转到@Machavity 的答案
我今天有时间,所以我能够使用 PDO 创建示例代码来展示它是如何完成的。将其保存为 index.php 并将字段名、数据库名、用户名、密码替换为您的。它写得很快并且未经测试,但它应该可以工作。表单的操作是当前的 php 文件,因此在此示例中没有用于更新内容的单独文件。一切都在一个文件中。
<?php
class db {
public static function dbFactory($host, $dbase, $user, $pass) {
$pdo = new PDO("mysql:host=$host;dbname=$dbase", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $pdo;
}
}
$id = isset($_REQUEST['id'])?intval($_REQUEST['id']):0;
if($id <= 0) {
echo "Please specify the id!";
exit;
}
$db = db::dbFactory('localhost','mydbname','myusername','mypassword');
if(isset($_POST['save'])){ // the update stuff
$field1 = $_POST['field1'];
$field2 = $_POST['field2'];
$field3 = $_POST['field3'];
$stmt = $db->prepare("UPATE `mytablename` SET `field1` = :field1, `field2` = :field2, `field3` = :field3 WHERE `myid` = :id ");
$stmt->bindValue(':field1', $field1, PDO::PARAM_STR);
$stmt->bindValue(':field2', $field2, PDO::PARAM_STR);
$stmt->bindValue(':field3', $field3, PDO::PARAM_STR);
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$success = $stmt->execute();
if($success) {
echo "Ok, data has been saved.";
}
}
$stmt = $db->prepare("SELECT * FROM `mytablename` WHERE `myid` = :id");
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
?>
<form method="post" action="index.php">
<input type='hidden' name='id' value='<?php echo $id;?>'>
<table>
<tr>
<td>Field1</td>
<td><input type='text' name='field1' value='<?php echo $data['field1'];?>'></td>
</tr>
<tr>
<td>Field2</td>
<td><input type='text' name='field2' value='<?php echo $data['field2'];?>'></td>
</tr>
<tr>
<td>Field3</td>
<td><input type='text' name='field3' value='<?php echo $data['field3'];?>'></td>
</tr>
</table>
<input type='submit' name='save' value='save me'>
</form>
关于php - 如何在 MySQL 中更新一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018808/