3

...这通常不会太难,但由于某种原因,我无法让它工作。我可能遗漏了某些东西或打错了字,我不知道,但无论是什么,我都找不到。

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!";
}
?>

我只是将整个代码粘贴到这里来确定。在网页上,您基本上会看到一个带有列 orderid 和标题的表格,以及它们各自的所有行。orderid 可以更改,因为它们是一个文本框。我想要实现的是一个(或多个)orderid 被更改,然后您单击按钮,然后我希望 orderid 在我的数据库中相应更改。

在此先感谢您的帮助。有任何问题请提出。

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

4

4 回答 4

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!";
}
?>
于 2013-03-21T14:15:24.960 回答
0

如果使用name="order[]" 它将返回数组,并且您必须使用 foreach 将数组转换为字符串

于 2014-10-24T07:17:53.243 回答
-1

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

mysql_query("更新文章 SET orderid='".$orderid ."' WHERE title='".$title ."'"); echo "更新了!";

于 2013-03-21T14:02:05.160 回答
-1

我希望它可见

mysql_query("更新文章 SET orderid='".$orderid."' WHERE title='".$title."'"); echo "更新了!";

于 2013-03-21T14:05:33.677 回答