从 mysql table 中删除记录
deleting records from mysql table
继续我简单的 CRUD,我又卡住了...
所以我创建了一个名为 "usuaris" 的 table 和一个名为 "id" 的列,这是我的自动增量,然后是另一个名为 "usuari_nom" 的列。现在,我想添加 "delete function",所以当我显示 table 的记录时,我添加了一个删除它:
<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>
所以现在,如果我单击 "eliminar usuari",它将转到我要添加要删除的查询的文件,以及该用户的 ID;例如:“http://localhost/calendario/elimina_usuari.php?subject=6”。但是,在文件 elimina_usuari.php 中,如何 select id 知道要删除什么记录?
我考虑过 $_GET 但它似乎不起作用,无论是 $_POST:
elimina_usuari.php
<?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";
}
?>
知道如何获得它的 ID 吗?我应该以某种方式从 url 中获取它吗?
谢谢
你很好。
只需要改变这个
$usuari_id = $_GET['id'];
到
$usuari_id = $_GET['subject'];
因为您在 url
中设置 subject
而不是 id
http://localhost/calendario/elimina_usuari.php?subject=6
^
如果你想像$_GET['id']
一样处理id
,你需要改变URL.
"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 table?
同样,在本地环境中调用 variables
不是问题,您要做的(并且应该注意的)就是在 sql query
中放置正确的参数。
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
这里id
是你数据库中的列名。你不能在这里改变它,即使你想要它。
然而,$usuari_id
是您的局部变量,您可以随意更改它。
希望我已经解释了您要查找的内容:)
在 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";
}
?>
您可以通过$_GET['subject']
获取id。
请注意SQL injection,因为您错误地获取了要删除的用户ID:
$usuari_id = mysqli_real_escape_string($conn, $_GET['subject']);
<?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";
}
?>
您只需要获取您随 url
发送的确切变量名称或参数名称
我的意思是看到你的 url 包含 subject=6
这意味着你必须获得主题而不是 id;
请替换此代码
$usuari_id = $_GET['id'];
到
$usuari_id = $_GET['subject'];
继续我简单的 CRUD,我又卡住了...
所以我创建了一个名为 "usuaris" 的 table 和一个名为 "id" 的列,这是我的自动增量,然后是另一个名为 "usuari_nom" 的列。现在,我想添加 "delete function",所以当我显示 table 的记录时,我添加了一个删除它:
<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>
所以现在,如果我单击 "eliminar usuari",它将转到我要添加要删除的查询的文件,以及该用户的 ID;例如:“http://localhost/calendario/elimina_usuari.php?subject=6”。但是,在文件 elimina_usuari.php 中,如何 select id 知道要删除什么记录?
我考虑过 $_GET 但它似乎不起作用,无论是 $_POST:
elimina_usuari.php
<?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";
}
?>
知道如何获得它的 ID 吗?我应该以某种方式从 url 中获取它吗?
谢谢
你很好。
只需要改变这个
$usuari_id = $_GET['id'];
到
$usuari_id = $_GET['subject'];
因为您在 url
中设置subject
而不是 id
http://localhost/calendario/elimina_usuari.php?subject=6
^
如果你想像$_GET['id']
一样处理id
,你需要改变URL.
"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 table?
同样,在本地环境中调用 variables
不是问题,您要做的(并且应该注意的)就是在 sql query
中放置正确的参数。
$query = "DELETE FROM subjects WHERE id = {$usuari_id} LIMIT 1";
这里id
是你数据库中的列名。你不能在这里改变它,即使你想要它。
然而,$usuari_id
是您的局部变量,您可以随意更改它。
希望我已经解释了您要查找的内容:)
在 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";
}
?>
您可以通过$_GET['subject']
获取id。
请注意SQL injection,因为您错误地获取了要删除的用户ID:
$usuari_id = mysqli_real_escape_string($conn, $_GET['subject']);
<?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";
}
?>
您只需要获取您随 url
发送的确切变量名称或参数名称我的意思是看到你的 url 包含 subject=6 这意味着你必须获得主题而不是 id;
请替换此代码
$usuari_id = $_GET['id'];
到
$usuari_id = $_GET['subject'];