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

尝试使用html表单和php更新mysql,php,html,mysql,sql-update,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 article

…这通常不会太难,但由于某种原因,我就是无法让它工作。我不知道,我可能遗漏了什么或是打错了,但不管是什么,我都找不到。
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!";
}
?>
include('connect-db.php');
mysql_connect(“$host”、“$username”、“$password”)或die(“无法连接”);
mysql_select_db($db_name)或die(“无法选择db”);
$query=“按医嘱ID从物品医嘱中选择*”;
$result=mysql\u query($query)或die(mysql\u error());
$count=mysql\u num\u行($result);
?>
沃尔戈德
滴度

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

mysql_查询(“更新文章集orderid=”。$orderid。“”其中title=”。“$title.”); 回声“更新!”

我希望它是可见的

mysql_查询(“更新文章集orderid=”。$orderid。“”其中title=”。“$title.”);回声“更新!”

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

$orderid = $_POST['order'];
$title = $_POST['title'];
mysql_query("UPDATE articles SET orderid=$orderid  WHERE title=$title");
您从未从表单中发回
标题
值。您需要在表单中添加一个
,因此请添加它。否则它将始终使用while循环中的最后一个值

如果您正在阅读$\u 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!";
}
?>
include('connect-db.php');
mysql_connect(“$host”、“$username”、“$password”)或die(“无法连接”);
mysql_select_db($db_name)或die(“无法选择db”);
$query=“按医嘱ID从物品医嘱中选择*”;
$result=mysql\u query($query)或die(mysql\u error());
$count=mysql\u num\u行($result);
?>
沃尔戈德
滴度
如果您使用
name=“order[]”

它将返回数组,您必须使用foreach将数组转换为字符串

为什么不在脚本中执行任何类型的成功/错误控制?计算mysql\u查询的返回值,并使用mysql\u error。它很可能会在where子句的标题前提醒您一个错误,因为–假设它是文本值–它周围缺少单引号。另外,您不应该再使用旧的mysql扩展,如果可能的话,应该使用mysqli/pdo。您还必须了解SQL注入以及如何应对它。我最近查阅了一些关于SQL注入的信息,只是还没有在这个特定的脚本中实现它。现在不要担心,我以后一定会这么做的。这是目前的主要问题。那么,我现在就拼命尝试成功/错误控制顺便说一句,
submit
不是元素的好名字。这将进一步引发问题。您犯了最大的错误-
mysql\u connect(“$host”、“$username”、“$password”)
。不要使用mysql函数,使用PDO。如果我使用这个,结果是一样的。啊,好的,我明白了。谢谢,我会试一试的。我已经更新了我的答案。如果您希望标题是只读的,那么使用
它仍然会显示回显“Updated!”,但数据库实际上不会更新。这个问题能在我的范围内吗…?不,不是这个范围。不要用
mysql\u query
来查询更新,而是用
echo
替换它,然后看看结果是什么。
其中title=$title
应该有引号<代码>其中title='$title'
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!";
}
?>