【发布时间】:2013-10-21 20:07:52
【问题描述】:
我有两个脚本在做几乎相同的事情,但其中一个不工作。我只是想不出问题出在哪里。两个脚本的代码几乎相同,但“更新消息”脚本不起作用。我没有收到任何 php 错误,但数据库没有更新。
删除脚本(工作):
<?php
function deleterow()
{
$con=mysqli_connect("localhost","root","root","TP1AlexandreBouletCouture");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$delete_id = ($_GET["delete_id"]);
$sql="DELETE FROM `table1` WHERE `table1`.`id` = '$delete_id'";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo '<p>Message supprimé</p>';
mysqli_close($con);
}
if(isset($_GET['delete_id']))
{
deleterow($_GET['delete_id']);
}
?>
<form action="history.php" method="get">
<input type="submit" value="Supprimer">
<input type="hidden" name="delete_id" value='.$row['id'].'>
</form>
更新消息脚本(不工作):
<?php
function updatemyinfos()
{
$con=mysqli_connect("localhost","root","root","TP1AlexandreBouletCouture");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$update_id = ($_GET["update_id"]);
$new_message = ($_GET["updatemessage"]);
$sql="UPDATE `table1` SET `message` = '$new_message' WHERE `table1`.`id` ='$update_id";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo '<p>Message modifié</p>';
mysqli_close($con);
}
if(isset($GET['updatemessage']))
{
updatemyinfos($GET['updatemessage']);
}
?>
<form action="history.php" method="get">
<textarea style="resize:none"cols="35"rows="3"name="updatemessage">'.$row['message'].'</textarea>
<input type="submit" value="Modifier">
<input type="hidden" name="update_id" value='.$row['id'].'>
</form>
【问题讨论】:
-
你很容易受到SQL injection attacks的攻击。
-
$GET!=$_GET,但这是你的问题中最小的一个:google 用于 SQL 注入以及如何防止它,并且永远不要使用 GET 请求来修改数据(预取浏览器可以预取你所有的删除链接,使您的数据库为空)。 -
我知道我很容易受到 SQL 注入攻击,但这只是一个简单的个人项目,我正在构建它以了解 PHP 的基础知识。我不会将该脚本用于任何“真正的”目的。
-
致 Wrikken :解决了!这是一个“错字”......我应该在尝试修复它时看到它......
标签: php mysql post get sql-update