尝试使用html表单和php更新mysql

时间:2013-03-21 13:53:49

标签: php html mysql sql-update

...通常不应该太难,但由于某种原因我无法让它发挥作用。我可能错过了一些东西或弄错了,我不知道,但无论如何我都找不到它。     

include('connect-db.php');

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$query = "SELECT * FROM articles ORDER BY orderid";
$result = mysql_query($query) or die(mysql_error());

$count = mysql_num_rows($result);
?>
<div class="content-holder">
    <form action="" method="post">
        <table border='1' cellpadding='10' id='ViewTable'>
            <tr>
            <th>Volgorde</th>
            <th>Titel</th>
            </tr>
            <?php
            while($row = mysql_fetch_array($result))
            {
                $orderid = $row['orderid'];
                $title = $row['title'];
            ?>
            <tr>
                <td><input type="textbox" class="TextAreaTitle" name="order" value="<?=$orderid?>"></td>
                <td><?=$title?></td>
            </tr>
            <?php
            }
            ?>
        </table>
        <input type="submit" name="submit" class="submitlink" Value="Verzenden">
    </form>
</div>

<?php
if(isset($_POST['submit']))
{
    mysql_query("UPDATE articles SET orderid=$orderid  WHERE title=$title");
    echo "Updated!";
}
?>

我只是粘贴了整个代码,以确保。在网页上,你基本上看到的是一个带有colomns orderid和title的表,以及它们各自的行。 orderid可以更改为文本框。我想要实现的是一个(或多个)orderid被更改,并且您单击按钮,然后我希望orderid在我的数据库中相应地更改。

提前感谢您的帮助。有任何问题请询问。

编辑:我完全忘记提及这一点,但是现在当我点击按钮时会发生什么,它会返回回显“已更新!”但数据库实际上并没有更新。

4 个答案:

答案 0 :(得分:2)

mysql_query("UPDATE articles SET orderid=$orderid  WHERE title=$title");

这需要引用表单中的<input>字段,如下所示:

$orderid = $_POST['order'];
$title = $_POST['title'];
mysql_query("UPDATE articles SET orderid=$orderid  WHERE title=$title");

您永远不会从表单中发布title值。您需要在表单中添加<input name="title" />,因此请添加该表单。否则它将始终使用while循环中的最后一个值。

如果您正在阅读$ _POST,则需要添加输入验证。否则你很容易受到攻击。

编辑:我修改了一下。

include('connect-db.php');

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$query = "SELECT * FROM articles ORDER BY orderid";
$result = mysql_query($query) or die(mysql_error());

$count = mysql_num_rows($result);
?>
<div class="content-holder">
    <form action="" method="post">
        <table border='1' cellpadding='10' id='ViewTable'>
            <tr>
            <th>Volgorde</th>
            <th>Titel</th>
            </tr>
            <?php
            while($row = mysql_fetch_array($result))
            {
                $orderid = $row['orderid'];
                $title = $row['title'];
            ?>
            <tr>
                <td><input type="textbox" class="TextAreaTitle" name="order[]" value="<?=$orderid?>"><input type="hidden" name="title[]" value="<?=$title?>"></td>
                <td><?=$title?></td>
            </tr>
            <?php
            }
            ?>
        </table>
        <input type="submit" name="submit" class="submitlink" Value="Verzenden">
    </form>
</div>

<?php
if(isset($_POST['submit']))
{
    for ($i=count($_POST['title']); $i--;) {
        $orderid = $_POST['order'][$i];
        $title = $_POST['title'][$i];
        mysql_query("UPDATE articles SET orderid=$orderid  WHERE title=$title");
    }
    echo "Updated!";
}
?>

答案 1 :(得分:0)

如果您使用name="order[]" 它将返回数组,你必须使用foreach

将数组转换为字符串

答案 2 :(得分:-1)

有时它会产生这些类型的错误。在插入数据或从数据库中检索时,它有不同的语法,所以应该尝试所有的解决方案

mysql_query(“UPDATE articles SET orderid ='”。$ orderid。“'WHERE title ='”。$ title。“'”);     echo“更新!”;

答案 3 :(得分:-1)

我希望它可见

mysql_query(“UPDATE articles SET orderid ='”。$ orderid。“'WHERE title ='”。$ title。“'”); echo“更新!”;