我已将MySQL表的结果输出到HTML表。在最后一列中,我想添加一个删除选项,该选项调用另一个表单并删除用户。我似乎无法让它工作。
这是我的结果页面代码:
<?php
$contacts = mysql_query("
SELECT * FROM contacts ORDER BY ID ASC") or die( mysql_error() );
// If results
if( mysql_num_rows( $contacts ) > 0 )
?>
<table id="contact-list">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Telephone</th>
<th>Address</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<?php while( $contact = mysql_fetch_array( $contacts ) ) : ?>
<tr>
<td class="contact-name"><?php echo $contact['name']; ?></td>
<td class="contact-email"><?php echo $contact['email']; ?></td>
<td class="contact-telephone"><?php echo $contact['telephone']; ?></td>
<td class="contact-address"><?php echo $contact['address']; ?></td>
<td class="contact-delete"><form action='delete.php' method="post">
<input type="hidden" name="name" value="">
<input type="submit" name="submit" value="Delete">
</form></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
,这是我的delete.php脚本
<?php
//Define the query
$query = "DELETE FROM contacts WHERE name={$_POST['name']} LIMIT 1";
//sends the query to delete the entry
mysql_query ($query);
if (mysql_affected_rows() == 1) {
//if it updated
?>
<strong>Contact Has Been Deleted</strong><br /><br />
<?php
} else {
//if it failed
?>
<strong>Deletion Failed</strong><br /><br />
<?php
}
?>
很确定我只是遗漏了一些东西,但我无法弄清楚那是什么:(
答案 0 :(得分:2)
您必须在删除链接中传递变量。您必须在隐藏字段中传递<?php echo $contact['name']; ?>
名称值,或在URL
替换
<td class="contact-delete">
<form action='delete.php' method="post">
<input type="hidden" name="name" value="">
<input type="submit" name="submit" value="Delete">
</form>
</td>
。通过强>
<td class="contact-delete">
<form action='delete.php?name="<?php echo $contact['name']; ?>"' method="post">
<input type="hidden" name="name" value="<?php echo $contact['name']; ?>">
<input type="submit" name="submit" value="Delete">
</form>
</td>
答案 1 :(得分:1)
使用javascript
<input name="Submit2" type="button" class="button" onclick="javascript:location.href='delete.php?id=<?php echo $your_id;?>';" value="« Back" />
和delet.php
$id=$_GET['id'];
并将$ id放入sql语句中。
答案 2 :(得分:1)
<input type="hidden" name="name" value="">
您在删除文件中缺少可被此行拾取的值。
$query = "DELETE FROM contacts WHERE name={$_POST['name']} LIMIT 1";
现在它没有收到任何东西,这就是为什么它不起作用。
因此,为它添加一个值,它将起作用。例如:
<input type="hidden" name="name" value="<?php echo $contact['name']; ?>">
答案 3 :(得分:0)
您缺少在此行中传递名称:
<input type="hidden" name="name" value="">
您需要在<?php echo $contact['name']; ?>
属性中添加一些内容(value
。
答案 4 :(得分:0)
首先,您无法以这种方式编写代码,代码无法防范SQL injection。
1)尝试使用主ID而不是使用名称(如果2个人的姓名相同,会发生什么?)。
因此,您可以创建一个隐藏字段来了解您正在处理的人。
<input type="hidden" name="contact_id" value="<?php $contact['contact_id']; ?>">
2)清理变量以避免攻击:
<?php $contact_id = isset($_POST['contact_id'])?intval($_POST['contact_id']):0;
// proceed with the query
if($contact_id>0) { $query = "DELETE FROM contacts WHERE contact_id = '$contact_id'";
}
// redirect to the main table with header("location: main.php");
?>
答案 5 :(得分:-1)
这是一个php删除流程脚本,您可以在删除按钮中链接此代码
<?php
$link=mysql_connect("localhost","root","");
mysql_select_db("photo",$link);
if(isset($_GET["id"])
$photoid=$_GET['id'];
$sql="delete from photos where photoid=".$_GET['id'];
$result=mysql_query($sql,$link);
header("location:home.php?ok");
?>