2014-01-26 79 views
1

我有一个php发布脚本,我需要它从数据库中获取数据。这里是脚本: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,它不是。帮帮我?

编辑:有整个代码。

+0

检查$ dbc对象。这是非常不安全的。清理用户提交的数据并使用准备好的语句。 – datelligence

+0

你做了'print_r($ row)'对吗? –

+0

而... Cookie是从哪里生成的?如果没有创建,则代码已完成其工作,如“不创建会话”一样。创建一个。 –

回答

2

很多事有蹊跷你的代码

我相信它是空白因为一个的if/else被搞砸:

if (isset($_POST['submit'])) { 
    .... 
    } 
    else {//here 
    else { 
     echo '<p class="error">There was a problem accessing your profile.</p>'; 
    } 
    } 

,那么你有没有意义

$错误变量
$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'] . "'"; 

然后你想抓住$姓氏从后

$姓氏= mysqli_real_escape_string($ DBC,修剪($ _ POST [ '姓']));

,但你没有在你的形式

而且这一部分:

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一个条件,你在哪里初始化。为什么再次使用相同的插入查询?

你不需要引号吗?

你有这么多问题在这里,我建议你一步一步解决问题。并重新设计整个事情。

+0

我要从另一个脚本,我有,所以我需要清理我有点我想 – user2544765

+0

@ user2544765是的你应该保持简单。我有一种感觉,你只需要组织好一点,你应该没问题。 – meda

+0

我已经编辑了上面的脚本...看看它应该更简单。 – user2544765

0

它在这里,

require_once('appvars.php'); 
require_once('connectvars.php'); 

其中一个文件不得设定或php无法找到这些文件。因为它说'需要'这意味着,直到我们没有得到这个文件,它将不会继续。所以它停止了它自己的执行。

尝试用:

include('appvars.php'); 
include('connectvars.php'); 

它,你看到的网页,然后问题是在这里本身。

+0

我其实已经得到它现在显示它只是没有发送信息到数据库 – user2544765

1

我把一些真正快速的东西放在一起,在我的系统上工作。

这是一个基本方法,我的意思是基本的,所以你需要做的休息。

只要改变DB凭据自己,并分配给$_SESSION['user_id']

the_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); 
+0

我可能会在将来使用这个 – user2544765

+0

它肯定会/可能会有所帮助。你可以基于你的INSERT方法。 @ user2544765 –