【发布时间】:2018-01-16 21:15:33
【问题描述】:
大家好,我对删除用户的形式有疑问,当我提交按钮时没有发生什么问题,当我获取他们来的信息时,一切都在数据库上正常工作,但是当我点击删除时没有发生任何事情
<?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);
}
?>
【问题讨论】:
-
if($_GET['type'] == ['dlt'])应该会抛出错误。您需要为整个事情添加错误检查。 -
删除删除中的
*。dlt也是字符串而不是数组 -
@JayBlanchard stackoverflow.com/questions/23315022/… 如果你愿意的话。
-
您的数据库中 u_id 列的数据类型是什么? int 还是 varchar?如果它是 int (我怀疑这是因为您将 $_GET 变量解析为 int)然后在查询中删除它周围的单引号,否则 mysql 认为它是一个字符串并且它不会与列中的 int 值匹配,因此它将找不到要删除的行。如果您使用了参数化查询(您确实应该这样做),则根本不会发生这种问题。