我在我的网站上创建了一个新闻栏目,并希望能够在需要时更新它。 我使用旧的mysql方法工作,但想通过使用PDO来改变它。
有人可以指出我的错误。表格会为我提供数据更新,但是从错误的行/ ID中提取。
这是我的问题:
<?php
$post_title = "";
$description = "";
$id = $_GET['id'];
$query = $db->query("SELECT title, description FROM htp_news WHERE id='$id'");
$post_title = $db->query('SELECT title FROM htp_news')->fetchColumn();
$description = $db->query('SELECT description FROM htp_news')->fetchColumn();
?>
这是我的表格,我在数据中回应。
<form method="post" action="update-news.php">
<input type="hidden" name="ud_id" style="width: 100%" value="<?php echo "$id"; ?>">
<div class="grid_12 botspacer60">
Title: <input type="text" name="ud_title" value="<?php echo "$post_title"; ?>">
<br /><br />
News Details:<br />
<textarea id="tiny_mce" name="ud_description" rows="8"><?php echo "$description"; ?></textarea>
我没有要求重写我的代码,只是提示或某些内容会有所帮助,所以我可以弄清楚我在这里做错了什么。
更新这适用于对AdRock答案的一些修改。
<?php
$id = isset($_GET['id']) ? $_GET['id'] : NULL;
$sth = $db->prepare("SELECT `id`, `title`, `description` FROM `htp_news` WHERE `id` = :id");
$sth->bindParam(':id', $id, PDO::PARAM_INT);
$sth->setFetchMode(PDO::FETCH_OBJ);
$sth->execute();
$row = $sth->fetch();
?>
<form method="post" action="update-news.php">
<input type="hidden" name="ud_id" style="width: 100%" value="<?php echo $row->id; ?>">
<div class="grid_12 botspacer60">
Title: <input type="text" name="ud_title" value="<?php echo $row->title; ?>">
<br /><br />
News Details:<br />
<textarea id="tiny_mce" name="ud_description" rows="8"><?php echo $row->description; ?></textarea>
</div>
<div class="grid_12">
<input type="submit" value="Update">
<input type="button" value="Cancel" onclick="window.location = '/admin'">
</div>
</form>
</div>
Here is the action script (update-news.php) that I'm using to add the new data into my database.
<?php
include($_SERVER['DOCUMENT_ROOT'] . "/includes/database.php");
// new data
$id = $_POST['id'];
$title = $_POST['title'];
$description = $_POST['description'];
// query
$sql = "UPDATE `htp_news` SET `title`=?, `description`=? WHERE id=?";
$sth = $db->prepare($sql);
$sth->execute(array($title,$description,$id));
echo "The post has been updated.<br />
<a href='edit-delete-news.php'>Update another position.</a><br />";
?>
感谢您的帮助。
答案 0 :(得分:-1)
试试这个
<?php
$sth = $dbh->prepare('SELECT id, title, description FROM htp_news WHERE id = :id')
$sth->bindValue(':id', $_POST['ud_id'], PDO::PARAM_INT);
$sth->execute();
$row = $sth->fetch(PDO::FETCH_ASSOC);
?>
<form method="post" action="update-news.php">
<input type="hidden" name="ud_id" style="width: 100%" value="<?php echo $row[0]['id']; ?>">
<div class="grid_12 botspacer60">
Title: <input type="text" name="ud_title" value="<?php echo $row[0]['title']; ?>">
<br /><br />
News Details:<br />
<textarea id="tiny_mce" name="ud_description" rows="8"><?php echo $row[0]['description']; ?></textarea>