继续我简单的CRUD,我再次陷入困境......
所以我创建了一个名为“usuaris”的表和一个名为“id”的列,这是我的自动增量,然后是另一个名为“usuari_nom”的列。现在,我想添加“删除功能”,所以当我显示我的表的记录时,我添加了一个删除它:
<div id="main">
<?php
global $conn;
$query = "SELECT * FROM usuaris";
if($grup_usuaris = mysqli_query($conn, $query)) {
echo "<table>";
echo "<tr><th>Usuaris</th><th>Accions</th></tr>";
while($row = mysqli_fetch_assoc($grup_usuaris)) {
echo "<tr><td>" . $row['usuari_nom'] . "</td><td><a href=\"elimina_usuari.php?subject=" . $row['id'] . "\">Eliminar usuari</a></td></tr>";
}
echo "</table>";
echo "<a href=\"nou_usuari.php\">+ Afegeix Usuari</a>";
mysqli_free_result($grup_usuaris);
} else {
echo "query failed";
echo("Error description: " . mysqli_error($conn));
}
?>
</div>
现在,如果我点击“除去usuari”,它会转到我要添加要删除的查询的文件,以及该用户的ID;例如:“http://localhost/calendario/elimina_usuari.php?subject=6”。但是,在文件elimina_usuari.php中,如何选择id来知道要删除的记录?
我认为使用$ _GET但它似乎不起作用,无论是使用$ _POST:
<?php
global $conn;
$usuari_id = $_GET['id'];
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
$result = mysqli_query($conn, $query);
if ($result && mysqli_affected_rows($conn) == 1) {
redirect_to("calendari.php");
} else {
echo "no eliminat";
}
?>
任何线索我怎样才能获得它的身份?我应该以某种方式从网址中获取它吗?
由于
答案 0 :(得分:3)
只需要改变这个
$usuari_id = $_GET['id'];
到
$usuari_id = $_GET['subject'];
在您的网址
中设置subject
而不是id
http://localhost/calendario/elimina_usuari.php?subject=6
^
如果您要处理id
,例如$_GET['id']
,则需要更改网址。
"http://localhost/calendario/elimina_usuari.php?id=6"
^ change here
修改强>
根据您的评论,
您可以使用任何$variable
到$_POST
或$_GET
,它与数据库列名无关。
您可以使用以下内容。
"http://localhost/calendario/elimina_usuari.php?eve_mf=6"
并在elimina_usuari.php
页面上
$id = $_GET['eve_mf'];
和第二部分,为什么我可以这样做,我不需要将它称为id,因为它在我的数据库表中被调用?
同样,问题不在于您在本地环境中调用variables
,您要做的事情(并且应该注意)就是在sql query
中添加正确的参数。
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
此处id
是数据库中列名的名称。如果您愿意,不能在此处进行更改。
但是,$usuari_id
是您的本地变量,您可以随意更改它。
希望我已经解释了你要找的东西:)
答案 1 :(得分:1)
您可以使用$_GET['subject']
获取ID。
请注意SQL injection,因为您错误地获取了要删除的用户的ID:
$usuari_id = mysqli_real_escape_string($conn, $_GET['subject']);
答案 2 :(得分:1)
<?php
global $conn;
$usuari_id = $_GET['subject'];
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
$result = mysqli_query($conn, $query);
if ($result && mysqli_affected_rows($conn) == 1) {
redirect_to("calendari.php");
} else {
echo "no eliminat";
}
?>
答案 3 :(得分:1)
您只需获取已使用您的网址
发送的确切变量名称或参数名称我的意思是看你的网址包含subject = 6 这意味着你必须得到主题而不是id;
请替换此代码
$usuari_id = $_GET['id'];
到
$usuari_id = $_GET['subject'];
答案 4 :(得分:0)
在elimina_usurai.php中试试这个
<?php
global $conn;
$usuari_id = $_GET['subject'];
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
$result = mysqli_query($conn, $query);
if ($result && mysqli_affected_rows($conn) == 1) {
redirect_to("calendari.php");
} else {
echo "no eliminat";
}
?>