大家好我每个人都有问题用我的退出用户的形式,当我提交按钮什么都没发生什么问题,当我获取信息他们来的时候一切都在数据库上工作但是当我点击删除没有发生的事情
<?php
$host ="localhost";
$dbname ="justnew";
$u_name="root";
$u_pass="youcef02";
echo'
<table border="1px solid #efefef" width="42%">
<tr>
<th>ID</th>
<th>Name</th>
<th>Password</th>
<th>DELETE</th>
</tr>
';
try{
$Conn = new PDO("mysql:host=$host;dbname=$dbname",$u_name,$u_pass);
}
catch(PDOEXCEPTION $e){
echo'There is a prblm' .$e->getMessage();
}
$sql = "SELECT * FROM addu";
$result = $Conn->query($sql);
while($row = $result->fetch(PDO::FETCH_OBJ)) {
echo"
<tr>
<td>" .$row->u_id."</td>
<td>" .$row->u_name."</td>
<td>" .$row->u_pass."</td>
<td><button name='dlt'><a href='attribute.php?
type=dlt&u_id=".$row->u_id."' name='dlt'>DELETE</a></button></td>
</tr>
";
}
if($_GET['type'] == ['dlt']){
$id = intval ($_GET['u_id']);
$Dsql = "DELETE * FROM `addu` WHERE `u_id` ='".$id."'";
$Dresult = $Conn->exec($Dsql);
}
?>
答案 0 :(得分:2)
看到没有人想为此发布答案,我提交了以下内容。
如上所述:if($_GET['type'] == ['dlt'])
无效。需要删除dlt
周围的括号,并且会抛出语法错误。
if($_GET['type'] == 'dlt')
但是,您应该检查GET数组是否设置为空,但是如果没有它,那么也会抛出一个未定义的索引警告,并在系统上设置error reporting。
if(isset($_GET['type']) && $_GET['type'] == 'dlt')
或
if(!empty($_GET['type']) && $_GET['type'] == 'dlt')
然后查询的DELETE部分也无效。
它应该是:
$Dsql = "DELETE FROM `addu` WHERE `u_id` ='".$id."'";
星号仅对SELECT语句有效:
使用过(PDO)错误处理后,您肯定会收到语法错误:
现在这一点可能会产生不利影响:
<td><button name='dlt'><a href='attribute.php?
type=dlt&u_id=".$row->u_id."' name='dlt'>DELETE</a></button></td>
</tr>
";
通常最好将这一切都放在一行:
<td><button name='dlt'><a href='attribute.php?type=dlt&u_id=".$row->u_id."'>DELETE</a></button></td>
</tr>
";
增加的空间可以算在这里。
注意:您曾两次使用name
属性。
如果上述操作失败,则<a href></a>
不应位于<button></button>
内,只需使用<a href></a>
。