gpt4 book ai didi

php - 删除 php 中的特定行时遇到问题

转载 作者:行者123 更新时间:2023-11-30 00:59:31 24 4
gpt4 key购买 nike

我一直在尝试使用 php.ini 从表中删除特定行。我按照在线指南制作了一个表格,其中包含数据,每行旁边都有一个删除按钮。

单击删除按钮时,应使用主键“id”删除该行。相反,它会遍历“if”语句并回显“Error”。

使用 echo var_dump($_GET) 我相信它正在传递 id,但 WHERE 子句不知何故没有接收到 id。

如果我删除 WHERE 子句,它会起作用,但当然会删除表中的所有数据

PHP删除

<?php

$host="localhost"; // host name
$username="root"; // database username
$password="root"; // database password
$db_name="school"; // database name
$tbl_name="Student"; // table name



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


$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
?>
<!--creating the table -->
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td colspan="5" bgcolor="#FFFFFF"><strong>Delete data</strong> </td>
</tr>

<tr>
<td align="center" bgcolor="#FFFFFF"><strong>id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Age</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Username</strong></td>
<td align="center" bgcolor="#FFFFFF">&nbsp;</td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
?>

<tr>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['Name']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['Age']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['Username']; ?></td>
<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=$id'>delete</a></td>


</tr>

<?php




// close while loop
}

?>

</table>

<?php
// close connection;
mysql_close();
?>

和 phpDelete2

<?php


$host="localhost"; // host name
$username="root"; // database username
$password="root"; // database password
$db_name="school"; // database name
$tbl_name="Student"; // table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select database");

// get value of id that sent from address bar


$id = $_GET['id'];

// Delete data in mysql from row that has this id



$sql="DELETE FROM $tbl_name";

$result=mysql_query($sql);

// if successfully deleted
if($result){
echo "Deleted Successfully";
echo "<BR>";
echo "<a href='index.php'>Back to main page</a>";
}

else {
echo "error";
}
?>

<?php
// close connection
mysql_close();
?>

最佳答案

您从未费心实际回显您的 ID 值:

<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=$id'>delete</a></td>

应该是

<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=<?php echo $id ?>'>delete</a></td>
^^^^^^^^^^^^^^^^^

同样,决不将像删除操作这样危险的操作放入简单的链接中。考虑一下如果您的浏览器决定“预加载”所有链接页面会发生什么?突然间,您删除了页面上列出的所有内容。

您的 DELETE 查询也不会使用您尝试传入的 ID,而只会删除表中的所有内容。应该是

DELETE FROM yourtable WHERE id = ID_VALUE_GOES_HERE

请注意SQL injection attacks还有...

关于php - 删除 php 中的特定行时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20270354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com