【问题标题】:PHP & MySQL - Update Query not updating databasePHP & MySQL - 更新查询不更新数据库
【发布时间】:2016-11-21 11:49:04
【问题描述】:

我正在制作一个个人网站,我只是希望它能够让我更轻松地添加/编辑我的帖子,而无需手动进入 phpmyadmin。

当我转到 edit_post.php 页面并按更新时,我会在 pid 旁边看到一个“=”符号,例如(foo.php?pid=3),如果我让它重定向到博客页面,它不会不要更新它。

博客页面

<?php
	session_start();
	include_once("../IncBlog/db.php");
?>
<?php include "../Includes/navHead.php"; ?>
		<title>Adam Brickhill - Life Journal </title>
	</head>
	<body>
		<div class="box">
			<div class="header">
				<nav class="nav"><p class="title"><a class="postLink" href="../IncBlog/post.php">- Lone Tree -</a></p></nav>
			</div>
			<!-- JOURNAL !-->
			<?php
				require_once("../nbbc/nbbc.php");

				$bbcode = new BBCode;

				$sql = "SELECT * FROM posts ORDER BY id DESC";

				$res = mysqli_query($db, $sql) or die(mysqli_error());

				$posts = "";

				if (mysqli_num_rows($res) > 0) {
					while ($row = mysqli_fetch_assoc($res)) {
						$id = 		$row['id'];
						$title = 	$row['title'];
						$img = 		$row['img'];
						$content = 	$row['content'];
						$date = 	$row['date'];

						$admin = "<div><a href='../IncBlog/del_post.php?pid$id'>Delete</a>&nbsp;<div><a href='../IncBlog/edit_post.php?pid$id'>Edit</a>";

						$output = $bbcode->Parse($content);

						ob_start();
							include('../IncBlog/blogSkel.php');
							$posts .= ob_get_contents();
						ob_end_clean();
					}
					echo $posts;
				}
				else {
					echo "There are no posts to display";
				}
			?>
			<div class="journal">
				<div class="catagories">
				
				</div>
				<!-- Date !-->
				<!-- Picture !-->
				<!-- Description !-->
			</div>
			

			<?php include "../Includes/navFooter.php"; ?>
			<!-- SCRIPTS !-->
			<?php include "../Includes/navScriptImport.php"; ?>
		</div>
	</body>
</html>

编辑页面

<?php
	session_start();
	include_once("db.php");

	if (!isset($_SESSION['username'])) {
		header("Location: login.php");
		return;
	}

	$pid = $_SERVER['REQUEST_URI'];
	$pid = trim($pid, "/IncBlog/edit_post.php?pid");

	$pid = strip_tags($pid);
	$pid = stripslashes($pid);
	$pid = mysqli_real_escape_string($db, $pid);
	//echo "$pid";

	if ($pid == "") {
		header("Location: ../Nav/life.php");
	}

	if (isset($_POST['update'])) {
		$title = strip_tags($_POST['title']);
		$content = strip_tags($_POST['content']);
		$img = strip_tags($_POST['image']);

		$title = mysqli_real_escape_string($db, $title);
		$content = mysqli_real_escape_string($db, $content);
		$img = mysqli_real_escape_string($db, $img);

		$date = date("l jS \of F Y h:i:s A");

		$sql = "UPDATE posts SET title='$title', content='$content', img='$img', date='$date' WHERE id=$pid";

		if ($title == "" || $content == "") {
			echo "The database is hungry you can't feed it nothing!";
			return;
		}

		mysqli_query($db, $sql);

		header("Location: ../Nav/life.php");
	}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Blog - Post</title>
</head>
<body>
		<?php
			$sql_get = "SELECT * FROM posts WHERE id=$pid LIMIT 1";
			$res = mysqli_query($db, $sql_get);

			if (mysqli_num_rows($res) > 0) {
				while ($row = mysqli_fetch_assoc($res)) {
					$title = $row['title'];
					$content = $row['content'];
					$img = $row['image'];

					echo "<form action='edit_post.php?pid=$pid' method='post' enctype='multipart/form-data'>";
					echo "	<input placeholder='Title' type='text' name='title' value='$title' autofocus size='48'><br /><br />";
					echo "	<input placeholder='Image' type='text' name='image' value='$img' autofocus size='48'><br /><br />";
					echo "	<textarea placeholder='Content' name='content' rows='40' cols='40'>$content</textarea><br />";
				}
			}
		?>

		<input type="submit" name="update" value="Update">
	</form>
</body>
</html>

【问题讨论】:

  • 您需要通过 php 和查询检查错误,您没有这样做。和 var_dump 的 ID 和其他变量
  • 我已经有了,ID为1,PID为1点击更新,没有任何反应。
  • 我在编辑中从标题中删除了 RESOLVED。如果下面发布的答案解决了它,请接受一个。如果没有,那么您可以发布自己的答案。接受答案会自动告诉系统问题已解决;您无需采取进一步行动。

标签: php mysql database web


【解决方案1】:

您必须设置列并设置列的值。

UPDATE posts SET ( title, content, img, date ) VALUES ($title, $content, $img, $date) WHERE id = $pid;

【讨论】:

    【解决方案2】:
    $date = date("l jS \of F Y h:i:s A");
    

    用上面一行代替

    $date = date('Y-m-d H:i:s', strtotime());
    
    $sql = 'UPDATE posts SET title='".$title."', content='".$content."', img='".$img."', date='".$date."' WHERE id='".$pid."'";
    

    【讨论】:

    • 没有也没有用,两个日期都有效。这不是我的问题,问题是当我单击更新以更新帖子时,它不会应用更改。
    【解决方案3】:

    好吧,我想通了,非常小的程序员会失明,但是我们都明白了。

    第 66 行 echo "&lt;form action='edit_post.php?pid$pid' method='post' enctype='multipart/form-data'&gt;";
    它说“?pid$pid”的地方我只需要删除我在那里的“=”。

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多