我将MySQL表的结果输出到HTML表,我正在尝试添加删除按钮以删除用户,但它不起作用。
HTML表单代码:
<?php
$response = $bdd->query('SELECT * FROM users');
$i = 1;
while ($datas = $response->fetch()) {
?>
<tr>
<td><?php echo $datas['first_name']; ?></td>
<td><?php echo $datas['last_name']; ?></td>
<td>
<form action="_delete.php?id=<?php echo $datas['id']; ?>" method="post">
<input type="hidden" name="name" value="<?php echo $datas['id'];?>">
<input class="btn btn-danger" type="submit" name="submit" value="X">
</form>
</td>
</tr>
这是我的_delete.php:
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'root', 'root');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
<?php
$id = (int)$_GET['id'];
$query = "DELETE FROM users WHERE id={$id} LIMIT 1";
//sends the query
mysql_query ($query);
if (mysql_affected_rows() == 1) {
?>
<strong>User Has Been Deleted</strong>
<?php
} else {
?>
<strong>Deletion Failed</strong>
<?php
}
?>
我的结果网址很好/_delete.php?id=13
但删除脚本不是。
我有这个错误:Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future
有什么想法吗?
答案 0 :(得分:1)
你搞砸了GET和POST参数。您定义了一个名为id
的get参数,其中包含您的ID和一个名为name
的帖子参数,其中包含您的ID。
但是目前您正在尝试使用$_POST
(仅包含post params)访问get参数。
要解决您的问题,您应该使用$_GET['id']
或$_POST['name']
。
在每种方式中,请记住保护您输入sql注入。目前,用户也可以传递任何其他内容。对int进行简单的转换就足够了。
$id = (int)$_GET['id'];
$query = "DELETE FROM users WHERE id={$id} LIMIT 1";
答案 1 :(得分:0)
我在答案中提出了一些建议,试着看看它是否有效。 创建一个连接,然后使用$ _GET而不是$ _POST获取ID。
<?php
$con=mysqli_connect("localhost","dbuser","dbpassword","dbname");
if($con==false){
die("ERROR:Could not connect.". mysqli_connect_error());
}
else{
$id=$_GET['id']
$query = "DELETE FROM users WHERE id='$id' LIMIT 1";
//sends the query
mysql_query ($con,$query);
if (mysql_affected_rows() == 1) {
?>
<strong>User Has Been Deleted</strong>
<?php
} else {
?>
<strong>Deletion Failed</strong>
<?php
}
}
?>