使用 php 删除 mysql 中的一行
Delete a row in mysql with php
我正在做一些 php + mysql 来删除数据库中的行,问题是当我按下按钮时没有任何反应。非常感谢您的帮助。
这个PHP显示了一个类型的员工必须做的课程列表,删除按钮应该删除你select它的列表的课程。
例如
cargocurso.php?id=1
显示员工类型,例如:
销售经理
并且在 table 中与该类型的员工相关的课程:
1 |销售 | (删除按钮)
<?php
$link = mysql_connect("localhost", "root","123456");
mysql_select_db("ecl", $link);
if (isset($_GET['id'])) {
$id=$_GET['id'];;
$sql = mysql_query("select k.idcargo, c.fullname, k.nombre_cargo, d.cursoid, d.id from mdl_course as c
inner join mdl_user_cursos_asoc as d on c.id = d.cursoid
inner join mdl_user_cargo as k on d.cargoid = k.idcargo where k.idcargo=$id", $link);
if (isset($_POST['delete'])) {
$idasoc = $_POST['idasoc'];
$sql2 = "DELETE FROM mdl_user_cursos_asoc WHERE id = '.$idasoc.'";
$result = mysql_query($sql2);
echo "has been deleted.";
}
if(mysql_num_rows($sql) == 0) {
echo "No hay cursos asociados";
} else {
$cargnombre = mysql_fetch_array($sql);
echo $cargnombre[2]."</br></br>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "<table border='1px'>";
while ($row = mysql_fetch_array($sql)) {
echo "<tr>";
echo "<input type='hidden' name='idasoc' value = '.$row[4].'>";
echo "<td>$row[1]</td>";
echo "<td><input type='submit' name='delete' value='Eliminar'></td>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
}
}
?>
感谢您的帮助!
删除记录的 sql 语句中存在一个小错误 - 那里有虚假句点 .
。更改为:
$sql2 = "DELETE FROM mdl_user_cursos_asoc WHERE id = '{$idasoc}'";
另外,其他人可能会注意到 lso - 停止使用现已弃用的 mysql_*
函数,因为它们现在通常被认为是不安全的。
除了在 sql 中滥用引号和句点之外,循环中还有另一个输出 table.
的内容
<?php
$link = mysql_connect("localhost", "root","123456");
mysql_select_db("ecl", $link);
if( isset( $_GET['id'] ) ) {
$id=$_GET['id'];
$sql = mysql_query("select k.idcargo, c.fullname, k.nombre_cargo, d.cursoid, d.id from mdl_course as c
inner join mdl_user_cursos_asoc as d on c.id = d.cursoid
inner join mdl_user_cargo as k on d.cargoid = k.idcargo where k.idcargo=$id", $link );
if ( isset( $_POST['delete'], $_POST['idasoc'] ) ) {/* Combine `isset` to test multiple POST vars are set */
$idasoc = $_POST['idasoc'];
$sql2 = "DELETE FROM mdl_user_cursos_asoc WHERE id = '{$idasoc}'";/* changed here */
$result = mysql_query( $sql2 );
echo "has been deleted.";
}
if( mysql_num_rows( $sql ) == 0 ) {
echo "No hay cursos asociados";
} else {
$cargnombre = mysql_fetch_array( $sql );
echo $cargnombre[2]."</br></br>";
echo "
<form action='".$_SERVER['PHP_SELF']."' method='post'>
<table border='1px'>";
while( $row = mysql_fetch_array( $sql ) ) {
echo "
<tr>
<td>
<input type='hidden' name='idasoc' value = '{$row[4]}'><!-- changed here -->
{$row[1]}
</td>
<td><input type='submit' name='delete' value='Eliminar'></td>
</tr>";
}
echo "
</table>
</form>";
}
}
?>
如果您不打算使用准备好的语句更改为 mysqli 或 PDO(这会减轻 sql 注入),那么至少要确保过滤从用户那里收到的任何数据 - 对于实例 mysql_real_escape_string
至少提供了一些保护。
我正在做一些 php + mysql 来删除数据库中的行,问题是当我按下按钮时没有任何反应。非常感谢您的帮助。
这个PHP显示了一个类型的员工必须做的课程列表,删除按钮应该删除你select它的列表的课程。
例如
cargocurso.php?id=1
显示员工类型,例如:
销售经理
并且在 table 中与该类型的员工相关的课程:
1 |销售 | (删除按钮)
<?php
$link = mysql_connect("localhost", "root","123456");
mysql_select_db("ecl", $link);
if (isset($_GET['id'])) {
$id=$_GET['id'];;
$sql = mysql_query("select k.idcargo, c.fullname, k.nombre_cargo, d.cursoid, d.id from mdl_course as c
inner join mdl_user_cursos_asoc as d on c.id = d.cursoid
inner join mdl_user_cargo as k on d.cargoid = k.idcargo where k.idcargo=$id", $link);
if (isset($_POST['delete'])) {
$idasoc = $_POST['idasoc'];
$sql2 = "DELETE FROM mdl_user_cursos_asoc WHERE id = '.$idasoc.'";
$result = mysql_query($sql2);
echo "has been deleted.";
}
if(mysql_num_rows($sql) == 0) {
echo "No hay cursos asociados";
} else {
$cargnombre = mysql_fetch_array($sql);
echo $cargnombre[2]."</br></br>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "<table border='1px'>";
while ($row = mysql_fetch_array($sql)) {
echo "<tr>";
echo "<input type='hidden' name='idasoc' value = '.$row[4].'>";
echo "<td>$row[1]</td>";
echo "<td><input type='submit' name='delete' value='Eliminar'></td>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
}
}
?>
感谢您的帮助!
删除记录的 sql 语句中存在一个小错误 - 那里有虚假句点 .
。更改为:
$sql2 = "DELETE FROM mdl_user_cursos_asoc WHERE id = '{$idasoc}'";
另外,其他人可能会注意到 lso - 停止使用现已弃用的 mysql_*
函数,因为它们现在通常被认为是不安全的。
除了在 sql 中滥用引号和句点之外,循环中还有另一个输出 table.
的内容<?php
$link = mysql_connect("localhost", "root","123456");
mysql_select_db("ecl", $link);
if( isset( $_GET['id'] ) ) {
$id=$_GET['id'];
$sql = mysql_query("select k.idcargo, c.fullname, k.nombre_cargo, d.cursoid, d.id from mdl_course as c
inner join mdl_user_cursos_asoc as d on c.id = d.cursoid
inner join mdl_user_cargo as k on d.cargoid = k.idcargo where k.idcargo=$id", $link );
if ( isset( $_POST['delete'], $_POST['idasoc'] ) ) {/* Combine `isset` to test multiple POST vars are set */
$idasoc = $_POST['idasoc'];
$sql2 = "DELETE FROM mdl_user_cursos_asoc WHERE id = '{$idasoc}'";/* changed here */
$result = mysql_query( $sql2 );
echo "has been deleted.";
}
if( mysql_num_rows( $sql ) == 0 ) {
echo "No hay cursos asociados";
} else {
$cargnombre = mysql_fetch_array( $sql );
echo $cargnombre[2]."</br></br>";
echo "
<form action='".$_SERVER['PHP_SELF']."' method='post'>
<table border='1px'>";
while( $row = mysql_fetch_array( $sql ) ) {
echo "
<tr>
<td>
<input type='hidden' name='idasoc' value = '{$row[4]}'><!-- changed here -->
{$row[1]}
</td>
<td><input type='submit' name='delete' value='Eliminar'></td>
</tr>";
}
echo "
</table>
</form>";
}
}
?>
如果您不打算使用准备好的语句更改为 mysqli 或 PDO(这会减轻 sql 注入),那么至少要确保过滤从用户那里收到的任何数据 - 对于实例 mysql_real_escape_string
至少提供了一些保护。