为什么单击按钮时传递了错误的值

时间:2016-04-16 23:55:39

标签: php html mysql

好的,我正在尝试从SQL数据库中获取内容,以便在按下按钮时填充字段。问题是无论按下哪个按钮,它总是将最后一行的值发送给php。我是一个php / mySQL菜鸟。我很抱歉,如果之前有人问过/回答过这个问题,我一直在网站上搜索几个小时,并没有遇到任何帮助我解决问题的事情。

索引页面图片和代码:index page image

<?php
require_once('database.php');

$query = 'SELECT * FROM omniarticles 
     ORDER BY recid';

$statement1 = $db->prepare($query);
$statement1->execute();
$article = $statement1->fetchAll();
$statement1->closeCursor();
?>
<!DOCTYPE HTML>
<html>
<head>
    <title>AMS</title>
    <link rel="stylesheet" type="text/css" href="basic.css">
</head>
<body>
    <h3>Article List</h3>
    <table>
        <tr>
        <th>Publication Date</th>
        <th>Title</th>
        <th>Action</th>
        </tr>

        <?php foreach ($article as $articles) : ?>
                <tr>
                    <td><?php echo $articles['publicationDate']; ?></td>
                    <td><?php echo $articles['title']; ?></td>
                    <td><form action="view.php" method="post">
                            <input type="hidden" name="recid" 
                                   value="<?php echo $articles['recid'];?>">
                            <input type="submit" value="View">
                        <input type="submit" value="Edit">
                    </td>
                </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>

view.php代码:

<?php
$recid = filter_input(INPUT_POST, 'recid');

require_once('database.php');

$q = 'SELECT * FROM omniarticles
    WHERE recid = :recid';
$s = $db->prepare($q);
$s->bindValue(':recid', $recid);
$s->execute();
$title = $s->fetch();
$s->closeCursor();

?>

<!DOCTYPE HTML>
<html>
<head>
    <title>AMS</title>
    <link rel="stylesheet" type="text/css" href="Module5Lab.css">
</head>
<body>
        <label>Article Title</label>
        <input type="text" name="article_title" value="<?php echo $title['recid']; ?>"/>
        <br/>
        <br/>
        <label>Article Summary</label>
        <textarea rows="4" cols="50"></textarea>
        <br/>
        <label>Article Content</label>
        <textarea rows="20" cols="50"><?php echo $title['content']; ?></textarea>
        <br/>
        <label>Publication Date</label>
        <input type="text" name="publication_date"/>
        <br/>
</body>
</html>

无论我按哪个按钮,我得到的结果始终是最后一条记录。 enter image description here

1 个答案:

答案 0 :(得分:0)

问题几乎可以肯定是这句话:

$ recid = filter_input(INPUT_POST,'recid');

我建议你做var_dump($ _ POST)并查看帖子数据中的内容。