[英]Php posting script not getting data from database
我有一個php發布腳本,我需要它從數據庫中獲取數據。 這是腳本:
<?php
error_reporting(E_ALL);
session_start();
// If the session vars aren't set, try to set them with a cookie
if (!isset($_SESSION['user_id'])) {
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cheesecake Productions - Post Topic</title>
<link rel="stylesheet" type="text/css" href="include/style/content.css" />
</head>
<body>
<?php
include ("include/header.html");
include ("include/sidebar.html");
?>
<div class="container">
<?php
require_once('appvars.php');
require_once('connectvars.php');
// Make sure the user is logged in before going any further.
if (!isset($_SESSION['user_id'])) {
echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>';
exit();
}
else {
echo('<p class="login">You are logged in as ' . $_SESSION['username'] . '. <a href="logout.php">Log out</a>.</p>');
}
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('could not connect to mysql '.mysqli_connect_error());
// Grab the profile data from the database
$query = "SELECT first_name FROM ccp2_user WHERE first_name = '" . $_SESSION['user_id'] . "'";
$data = mysqli_query($dbc, $query);
///////////////////////////
///What must I do after////
//getting the data from////
//database. I am new to////
//PHP//////////////////////
//////////////////////////
$row = mysqli_fetch_array($data);
$first_name = mysqli_real_escape_string($dbc, trim($_POST['first_name']));
if (isset($_POST['submit'])) {
// Grab the profile data from the POST
$post1 = mysqli_real_escape_string($dbc, trim($_POST['post1']));
// Update the profile data in the database
if (!$error) {
if (!empty($post1)) {
// Only set the picture column if there is a new picture
$query = "INSERT INTO `ccp2_posts` (`first_name`, `post_date`, `post`) VALUES ('$first_name', NOW(), '$post1')";
mysqli_query($dbc, $query);
// Confirm success with the user
echo '<p>Your post has been successfully added. Would you like to <a href="viewpost.php">view all of the posts</a>?</p>';
mysqli_close($dbc);
exit();
}
else {
echo '<p class="error">You must enter information into all of the fields.</p>';
}
}
} // End of check for form submission
else {
echo '<p>Grr</p>';
}
mysqli_close($dbc);
?>
<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MM_MAXFILESIZE; ?>" />
<fieldset>
<legend>Post Here:</legend>
<label type="hidden" for="post1">Post Content:</label><br />
<textarea rows="4" name="post1" id="post1" cols="50">Post Here...</textarea><br />
</fieldset>
<input type="submit" value="Save Post" name="submit" />
</form>
</div>
<?php
include ("include/footer.html");
?>
</body>
</html>
該腳本應該從數據庫中獲取first_name,而不是。 救命?
編輯:這是整個代碼。
你的代碼很多東西都很奇怪
我相信它是空白的,因為其中一個if / else搞砸了:
if (isset($_POST['submit'])) {
....
}
else {//here
else {
echo '<p class="error">There was a problem accessing your profile.</p>';
}
}
然后你有$ error變量,沒有任何意義
$error = false;
然后你有你的形式:
<input type="text" id="first_name" name="first_name" value="" /><br />
但你不想從那里抓住它,但數據庫:
$query = "SELECT first_name FROM ccp2_user
WHERE user_id = '" . $_SESSION['user_id'] . "'";
然后你想從帖子中獲取$ last_name
$ last_name = mysqli_real_escape_string($ dbc,trim($ _ POST ['last_name']));
但是你的形式沒有它
這一部分:
if (!empty($first_name) && !empty($post1)) {
// Only set the picture column if there is a new picture
if (!empty($new_picture)) {
$query = "INSERT INTO `ccp2_posts` (`first_name`, `post_date`, `post`)
VALUES ('$first_name', NOW(), '$post1')";
}
else {
$query = "INSERT INTO `ccp2_posts` (`first_name`, `post_date`, `post`)
VALUES ('$first_name', NOW(), '$post1')";
}
}
你有關於new_picture的條件你在哪里初始化它。 為什么再次使用相同的插入查詢?
你不需要引用它嗎?
你這里有很多問題,我建議你一步一步地拍麻煩。 並重新設計整個事情。
我把一些快速的東西放在我的系統上。
這是一個基本的方法,我的意思是基本的,所以你需要做其余的事情。
只需將數據庫憑據更改為您自己的憑據,並將the_user_id
分配給$_SESSION['user_id']
這是我能做的最好的幫助。
<?php
$DB_HOST = "xxx";
$DB_USER = "xxx";
$DB_PASS = "xxx";
$DB_NAME = "xxx";
$dbc = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($dbc->connect_errno > 0) {
die('Connection failed [' . $dbc->connect_error . ']');
}
session_start();
$_SESSION['user_id'] = "the_user_id"; // change this to the user's id
// You can use * also as the line from below
// $sql = $dbc->query("SELECT * FROM `ccp2_user` WHERE `user_id` = '" . $_SESSION['user_id'] . "'");
$sql = $dbc->query("SELECT `first_name` FROM `ccp2_user` WHERE `user_id` = '" . $_SESSION['user_id'] . "'");
while($row= mysqli_fetch_array($sql))
{
echo $row['user_id'];
}
// for testing purposes
// var_dump($_SESSION['user_id']);
// var_dump($_SESSION);
mysqli_close($dbc);
它在這里,
require_once('appvars.php');
require_once('connectvars.php');
其中一個文件不能設置或php無法找到這些文件。 所以它說“要求”意味着直到我們沒有得到這個文件它不會繼續。 所以它停止了那里的執行。
試試看:
include('appvars.php');
include('connectvars.php');
你看到頁面然后問題就在這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.