【发布时间】:2013-03-21 13:53:48
【问题描述】:
...这通常不会太难,但由于某种原因,我无法让它工作。我可能遗漏了什么或打错了字,我不知道,但不管是什么,我都找不到。
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 在我的数据库中相应地更改。
提前感谢您的帮助。有任何问题欢迎提问。
编辑:我完全忘了提及这一点,但是当我点击按钮时会发生什么,它返回回声说“更新!”但数据库实际上并没有更新。
【问题讨论】:
-
你为什么不在你的脚本中做任何成功/错误控制?评估 mysql_query 的返回值,并使用 mysql_error。它很可能会在 where 子句中的标题之前提醒您一个错误,因为——假设它是一个文本值——你在它周围缺少单引号。第二点,你不应该再使用旧的 mysql 扩展,如果可能的话,应该使用 mysqli/pdo。而且您必须告知自己有关 SQL 注入的信息以及如何应对它。
-
我最近查了一些关于 SQL 注入的知识,只是还没有在这个特定的脚本中实现它。暂时不用担心,以后我一定会这样做的。这是目前的主要问题。那么,我现在会拼命尝试成功/错误控制。 :p
-
顺便说一句,
submit不是一个好的元素名称。这将导致进一步的问题。 -
你犯了最大的错误-
mysql_connect ( "$host" , "$username" , "$password" )。不要使用mysql_函数,使用 PDO。
标签: php html mysql sql-update