【发布时间】:2015-06-04 10:31:58
【问题描述】:
我正在尝试制作这个程序,如果我登录,我可以在其中删除一个线程。现在我已经链接了按钮和所有内容,按下时我让它执行多个任务,但它似乎没有运行 SQL 查询我想要它。现在我有一个名为 $forumid 的变量,它在 URL 中设置并使用 $_GET['forumid']; 检索。 我知道这是正确设置的,因为我已经完成了 echo $forumid;它是正确的。但是有一行代码由于某种原因没有运行,那就是:
$db->query("DELETE FROM threads WHERE id='$forumid'");
现在,当我删除 WHERE 子句时,它可以工作,但它会清除整个表。所以我现在知道问题出在 WHERE 子句上,我只是不知道为什么会出现问题。我对PHP相当陌生,所以请原谅我的无知。但如果有人能够看到这个问题,请告诉我。谢谢。
[编辑:完整代码]
<?php
require 'connect.php';
session_start();
$forumid = $_GET['forumid'];
$title;
$body;
$by;
$loggedAsAuthor;
?>
<html>
<head>
<title>Legend Factions - View Forum</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="header">
<a href="index.php">Home</a>
<a href="forum.php">Forum</a>
<a href="vote.php">Vote</a>
<a href="http://legacyfactionsraid.buycraft.net/">Donate</a>
<a href="members.php">Members</a>
</div>
<div id="content">
<div id="divider">
<?php
if ($result = $db->query("SELECT * FROM threads")) {
while ($row = $result->fetch_assoc()) {
if ($row['id'] == $forumid) {
$title = $row['title'];
$body = $row['words'];
$by = $row['by'];
if ($_SESSION['sess_username'] == $by || $_SESSION['sess_username'] == "admin") {
$loggedAsAuthor = true;
}
}
}
}
echo '<h2>', $title, '</h2><br/><label>By: ', $by;
if (isset($loggedAsAuthor)) {
echo '<form action="viewForum.php" method="post">
<br/><input type="submit" name="delete" value="Delete Thread"/>
</form>';
}
$delete = $_POST['delete'];
if (isset($delete)) {
$db->query("DELETE FROM threads WHERE id=$forumid ");
//header("Location: forum.php");
}
?>
<hr/>
<?php
echo $body;
?>
</div>
</div>
</body>
</html>`
【问题讨论】:
-
你在数据库中有
id= $forumid的记录吗? -
回显查询并检查查询错误...
-
回显您的查询并直接在
phpmyadmin中运行 -
您的
threads表是什么样的?您确定要查找id还是其他字段,例如forum_id? -
为什么同一个问题要发两次? stackoverflow.com/questions/29361203/…
标签: php mysql phpmyadmin