尝试使用PHP按钮删除MySQL行
编辑:添加了viewProblems的全部代码,实际凭证信息仅*** 我一整天都在试着这么做,但我想不出来。我想要的是每行末尾的一个按钮(按钮正确显示),它允许我从MySQL数据库和页面中删除该行(但不删除任何内容)。我的守则如下:尝试使用PHP按钮删除MySQL行,php,mysql,Php,Mysql,编辑:添加了viewProblems的全部代码,实际凭证信息仅*** 我一整天都在试着这么做,但我想不出来。我想要的是每行末尾的一个按钮(按钮正确显示),它允许我从MySQL数据库和页面中删除该行(但不删除任何内容)。我的守则如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>View Problems</title>
<!-- Bootstrap core CSS -->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="well">
<div class="container">
<div class="page-header">
<h1>Jimmy's Laundry</h1>
</div>
<ol class="breadcrumb">
<li><a href="index.html">Home</a></li>
<li><a href="login.html">Login</a></li>
<li><a href="adminPage.php">Admin page</a></li>
</ol>
</div>
</div>
<?php
$servername = "***";
$username = "***";
$password = "***";
$dbname = "***";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT problem_id, machine_id, description FROM tbl_problem";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
echo '<table class="table table-hover"><tr><th>Problem ID</th><th>Machine Number</th><th>Problem Description</th><th> </th></tr>';
while($row = $result->fetch_assoc())
{
echo "<tr><td>" . $row['problem_id']. "</td><td>" . $row['machine_id']. "</td><td>" . $row['description']. "</td><td><form action='deleteProblem.php?name=" . $row['problem_id']."' method= 'post'><input type='hidden' name='id' value=".$row['problem_id']."><input class ='btn btn-danger' type='submit' name='submit' value='Resolved?'></form></td></tr>";
}
echo "</table>";
}
else
{
echo "There are no problems! :)";
}
?>
</table>
</body>
<?php
$query= "DELETE FROM tbl_problem WHERE problem_id={$_POST['id']}";
mysql_query ($query);
if (mysql_affected_rows() == 1)
{
echo "<strong>Row has been deleted</strong>"
}
else
{
echo "<strong>Deletion Failed</strong>"
}?>
查看问题
吉米的洗衣店
删除行的脚本是在单独请求中执行的单独脚本。因此,它与生成页面的请求完全隔离,如果要查询或删除数据,则必须建立新的数据库连接
在您当前的情况下,您没有建立连接,因此delete语句失败。您可能不得不使用mysql_*()函数,但这并不能免除您编写易受攻击代码的责任。您只是假设您的查询永远不会失败。您是否检查了mysql_errors()?您没有显示如何/在何处连接到数据库,因此据我们所知,您的删除查询根本不会执行。开始调试:顶部的deleteProblem.php
assprint\r($\u POST)代码>回送$query
,然后再执行。您将在执行时看到确切的查询。尝试使用类似于mysql\u error()
的函数来获取错误信息。您还可以尝试在PHPMyAdmin中执行该查询,并查看它是否在那里工作。@MarcB在喋喋不休地谈论SQL注入风险之前,为可怜的OP提供一个修复当前问题的机会。归根结底,如果他们的网站因为SQL注入而遭到黑客攻击,那是OP自己的错。@GolezTrol我在发表我的评论后注意到了这一点,但决定将其保留在MySQL API的混合上。从一个API跳到另一个API,然后说他/她不能使用mysqli\uuu
是完全不清楚的。更不用说从一个API跳到另一个了;)因为这是一个不同的、孤立的脚本,所以这其实不重要。在第二个脚本中使用mysql\u connect
可以很好地工作。但是,如果OP使用的是PHP5.5,那么即使连接代码使用的是mysql\uuuz
函数,它也会因为不推荐而失败。至少,Wamp是这样的。但这将是下一个问题。婴儿步。:)@TheElm,我想你还没有读过问题的第一个脚本和下面的其他评论。