2

我正在尝试从 sql 数据库中提取用户名以放置在我的聊天中。我的数据库的结构如下所示。无论我做什么,它都不起作用,我似乎不明白,因为我可以通过执行 .$user_info['username'] 来回显人们的用户名。但是,当我将它放在 fwrite 函数中时,什么也没有出现。我错过了什么,为什么用户名没有出现在 fwrite 函数中。

数据库 http://goawaymom.com/db.jpg

<?
mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("root_members") or die(mysql_error());

session_start();
if(isset($_SESSION['name'])){
$text = $_POST['text']; 
$fp = fopen("log.html", 'a');
fwrite($fp, "<div class='msgln'> ".$user_info['username'].">".stripslashes(htmlspecialchars($text))."</div>");
fclose($fp);
}
?>
4

3 回答 3

2

您需要定义 $user_info:

<?
mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("root_members") or die(mysql_error());

session_start();
if(isset($_SESSION['name'])){

// select from database
$result = mysql_query('SELECT * FROM users WHERE username="' . $_SESSION['name'] . '"'); 
// retrieve row
$user_info = mysql_fetch_assoc($result); // fixed this from mysql_fetch_row to mysql_fetch_assoc

$text = $_POST['text']; 
$fp = fopen("log.html", 'a');
fwrite($fp, "<div class='msgln'> ".$user_info['username']." &gt;".stripslashes(htmlspecialchars($text))."</div>");
fclose($fp);
}
?>
于 2012-10-02T04:39:28.463 回答
2

$user_info人口在哪里?看起来这是拼图中缺失的一块。我还修复了大于符号,它需要实体代码才能在 HTML 中正确呈现。

<?php
mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("root_members") or die(mysql_error());

session_start();
if (isset($_SESSION['name'])) {
    $sql = sprintf("SELECT username FROM root_members WHERE querygoeshere='%s'",
                   mysql_real_escape_string($querygoeshere));

    $result = mysql_query($sql);
    if (!$result) {
        die('Could not execute query: ' . mysql_error());
    }
    $row = mysql_fetch_row($result);
    $username = $result[0];

    $text = $_POST['text'];
    $fp = fopen("log.html", 'a');
    fwrite($fp, "<div class='msgln'>" . $username . " &gt; " . stripslashes(htmlspecialchars($text)) ."</div>");
    fclose($fp);
}
于 2012-10-02T04:40:54.513 回答
1

看起来你fwrite很好,但是你>跟随用户名输出可能会被浏览器混淆为标签的结尾。

尝试这个:

fwrite($fp, "<div class='msgln'> ".$user_info['username']."&gt;".stripslashes(htmlspecialchars($text))."</div>");
于 2012-10-02T04:20:11.933 回答