我的数据库中有下表:
CREATE TABLE subjects (
subject_id int(11) NOT NULL AUTO_INCREMENT,
subject text,
PRIMARY KEY (subject_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
我通过以下方式(index.php)在php中显示此表:
<table class="subjects">
<tr>
<th colspan="3" style="border-top-left-radius: 15px; border-top-right-radius: 15px;"><h2>Asignaturas</h2></th>
</tr>
<tr>
<th> Asignatura </th>
<th> Eliminar </th>
</tr>
<?php
$sql = "SELECT * FROM subjects"; /*Select from table name: subjects*/
$result = $conn->query($sql); /*Check connection*/
if ($result->num_rows==0){
echo '<p style="color: blue; text-align: center; font-size: 20px;">No hay asignaturas</p>';
}else{
while($row = $result->fetch_assoc()) {
echo "</td><td>".$row["subject"]."</td><td><a class='eliminate' onClick=\"javascript: return confirm('Please confirm to delete');\" href=\"deleteSubject.php?id=".$row['subject_id']."\">X</a></td></tr>";
}
}
?>
</table>
和deleteSubject.php就像这样:
<?php
include('Conexion.php');
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$subject_id = $_GET['subject_id']; // $id is defined
mysqli_query($conn,"DELETE FROM subjects WHERE subject_id='".$subject_id."'");
mysqli_close($conn);
我遇到的问题是,当我单击X时,它不允许我删除主题。它向我显示了可以删除的确认警报,但它没有执行任何操作,只是刷新了index.php。页面,但不删除任何内容。
有人可以帮我看看错误在哪里吗?谢谢
答案 0 :(得分:1)
当您请求删除时,您正在传递变量id
,但试图访问subject_id
中的变量$_GET['subject_id']
。
改为尝试$_GET['id']
。
此外,请确保验证值是有效的id,并使用准备好的语句来提高安全性,因为您有一个巨大的SQL注入漏洞(如所述)。
答案 1 :(得分:1)
错误在这里
IFERROR
应该是
#REF!
您需要在对id进行任何操作之前验证查询字符串,这对于停止sql注入或XSS攻击是必需的