尝试使用PHP从数据库中删除行
我试图在单击删除链接时从数据库中删除一行。但收到以下错误消息: 您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 代码如下: 删除_db.php尝试使用PHP从数据库中删除行,php,Php,我试图在单击删除链接时从数据库中删除一行。但收到以下错误消息: 您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 代码如下: 删除_db.php <html> <body> <?php //session_start(); $myusername = $_SESSION['uname']; $host="localhost"; // Host name $username="root"; // Mysql us
<html>
<body>
<?php
//session_start();
$myusername = $_SESSION['uname'];
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="vacation_tool"; // Database name
$tbl_name="login"; // Table name
// Connect to server and select databse.
$con = mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$query="select EmployeeID,FirstName,LastName,ManagerName from users";
$result=mysql_query($query);
$num=mysql_numrows($result) or die ("error in function_name: <br>Sql: " . $sql . "<br>" . mysql_error());
//mysql_close();
?>
<div id="bv_Text2" style="position:absolute;left:480px;top:250px;width:550px;height:16px;z-index:5;" align="left">
<table border="1" cellspacing="2" cellpadding="2">
<tr width = "100%">
<td width = "15%" align = "center"><font style="font-size:13px" color="#000000" face="Arial"><b>Employee ID</b></font></td>
<td width = "20%" align = "center"><font style="font-size:13px" color="#000000" face="Arial"><b>First Name</b></font></td>
<td width = "20%" align = "center"><font style="font-size:13px" color="#000000" face="Arial"><b>Last Name</b></font></td>
<td width = "20%" align = "center"><font style="font-size:13px" color="#000000" face="Arial"><b>Manager Name</b></font></td>
</tr>
</div>
<?php
$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"EmployeeID");
$f2=mysql_result($result,$i,"FirstName");
$f3=mysql_result($result,$i,"LastName");
$f4=mysql_result($result,$i,"ManagerName");
?>
<div id="bv_Text2" style="position:absolute;left:480px;top:260px;width:144px;height:16px;z-index:6;" align="left">
<tr>
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo $f1; ?></font></td>
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo $f2; ?></font></td>
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo $f3; ?></font></td>
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo $f4; ?></font></td>
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo '<td><a href="remove.php?EmployeeID=' . $num['EmployeeID'] . '">Remove</a></td>'; ?></font></td>
</tr>
</div>
<?php
$i++;
}
?>
</body>
</html>
员工ID
名字
姓
经理姓名
和remove.php:
<?php
session_start();
$myusername = $_SESSION['uname'];
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="vacation_tool"; // Database name
$tbl_name="login"; // Table name
// Connect to server and select databse.
$con = mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
if (isset($_GET['EmployeeID']))
{
// get id value
$EmployeeID = $_GET['EmployeeID'];
// delete the entry
$query = "DELETE FROM users WHERE EmployeeID = $EmployeeID";
$result = mysql_query($query) or die(mysql_error());
// redirect back to the view page
header("Location: remove_user.php");
}
else
// if id isn't set, or isn't valid, redirect back to view page
{
echo "Error";
}
?>
请帮帮我。更换
$query = "DELETE FROM users WHERE EmployeeID = $EmployeeID";
与
您的代码声明
<a href="remove.php?EmployeeID=' . $num['EmployeeID'] . '">Remove</a></td>'; ?></font>
”;?>
但是EmployeeID
在$f1
中,而不是$num
中$num
甚至不是数组
因此,除了上面的错误(您应该使用$f1
)之外,您还做了一些其他事情,但做得不够好:
- 您还没有将PHP配置为通知您可能收到的所有警告、错误等
- 您正在接受来自外部的值并在查询中使用它,使自己暴露于SQL注入攻击(至少使用
)EmployeeID=(int)$\u GET['EmployeeID']
- 您使用的是
函数,其用法是。改用PDO或mysqlimysql.*
- 您没有将PHP代码与HTML表示分离
虽然完全可以在不注意上述任何提示的情况下编程,但您会发现遵循这些提示更容易、更高效、更有趣。我为这种傲慢的语气道歉,但我很难发现这一点。看起来你传递了错误的员工ID。员工ID被分配到$f1,而你在url中使用的$num['employeeID',应该是空的 移除链接必须是:
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo '<td><a href="remove.php?EmployeeID=' . $f1 . '">Remove</a></td>'; ?></font></td>
进行一步一步的调试总是很有帮助的,这样您就可以自己解决问题了。在这种情况下:
另外,在直接用于任何DML语句之前,必须对$GET进行消毒。完全易受攻击。感谢您的回复。。。当点击删除链接时,它将不起作用。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果你选择PDO,。很好。。。谢谢,它正在工作:)
<td align = "center"><font style="font-size:13px" color="#000000" face="Arial"><?php echo '<td><a href="remove.php?EmployeeID=' . $f1 . '">Remove</a></td>'; ?></font></td>