用php pdo更新行

时间:2014-04-09 06:38:01

标签: php mysql pdo

我在我的网站上创建了一个新闻栏目,并希望能够在需要时更新它。 我使用旧的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 />";
?> 

感谢您的帮助。

1 个答案:

答案 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>