【发布时间】:2014-12-10 18:10:46
【问题描述】:
我有一个关于使用 php 表单从 SQL 中删除数据的问题。
我的 php 表单是这样的:(我猜它只是 HTML)
<html>
<body>
<form action="delete.php" method="get">
Uporabniško ime <input type="text" name="user"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
然后我有代码应该从我的 sql 中删除,称为 delete.php:
<?php
$servername = "localhost";
$username = "test";
$password = "test";
$dbname = "iss";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$user = $_POST['user'];
/*if (is_int($_GET['up_ime'])
$query = "DELETE FROM uporabniki WHERE up_ime = " . $_GET['up_ime'];
$result = mysqli_query($con, $query);
// Check the result and post confirm message
}*/
$sql = "DELETE FROM iss.uporabniki WHERE uporabniki.up_ime = " .$_POST['user'];
?>
在我的 sql 数据库中,我有名为“iss”的数据库和表“uporabniki”。 up_ime 是唯一的,基本上是用户名。 所以我正在尝试制作表单,我可以在其中写用户名,当我点击提交时,应该从 SQL 数据库中删除该用户。 我不知道我做错了什么以及为什么这不起作用。
【问题讨论】:
-
你的表单方法不正确;使用“发布”。注意这个 =>
$_POST -
还要确保您要删除的用户是
int并基于用户 ID 号。否则,".$_POST['user'];将添加到代码的失败中。更不用说你现在的代码对SQL injection开放。 -
警告:使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 请勿使用字符串连接来完成此操作,因为您将创建严重的SQL injection bugs。这段代码非常危险。 -
仅供参考:如果可以,请使用 jQuery ajax 调用,它会很高效并防止刷新浏览器。