0

やあ、

私の機能の何が問題になっていますか?機能していないようですが、理由はわかりません。この関数はユーザー名を返すはずです:

function getusername($username) {
    $sql = "SELECT username FROM users WHERE id='".$username."' LIMIT 1";
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    return $row['$username'];

このコードで使用すると、何も返されません:

if (mysql_num_rows($res) == 1) {
    echo "<table width='100%'>";
    // Check to see if the person accessing this page is logged in
    if (isset($_SESSION['username'])) { echo "<tr><td colspan='2'><input type='submit' value='Add Reply' onClick=\"window.location = 'post_reply.php?cid=".$cid."&tid=".$tid."'\" /><hr />"; } else { echo "<tr><td colspan='2'><p>Please log in to add your reply.</p><hr /></td></tr>"; }
    // Fetch all the topic data from the database
    while ($row = mysql_fetch_assoc($res)) {
        // Query the posts table for all posts in the specified topic
        $sql2 = "SELECT * FROM posts WHERE category_id='".$cid."' AND topic_id='".$tid."'";
        // Execute the SELECT query
        $res2 = mysql_query($sql2) or die(mysql_error());
        // Fetch all the post data from the database
        while ($row2 = mysql_fetch_assoc($res2)) {
            // Echo out the topic post data from the database
            echo "<tr><td valign='top' style='border: 1px solid blue;'><div style='min-height: 125px;'>".$row['topic_title']."<br />by ".getusername($row2['post_creator'])." - ".convertdate($row2['post_date'])."<hr />".$row2['post_content']."</div></td><td width='200' valign='top' align='center' style='border: 1px solid blue;'>User Info Here</td></tr><tr><td colspan='2'><hr /></td></tr>";
        }
4

3 に答える 3

3

あなたはに変更する必要がありreturn $row['$username'];ますreturn $row['username'];

于 2012-12-28T11:38:22.117 に答える
1

PDO を使用します。

ここでそれについて読むことができます。

私があなたを見てもらう方法を見つけることができれば';DROP TABLE users;--、私はあなたに非常に悪い日を与えることができます. $_GETヒント: varsを使用してカテゴリまたはトピック番号を選択できますか?

JOIN も使用する必要があります

データベースに対して 1 つのクエリを実行することは、10 回よりも優れています。

SELECT posts.*, users.username FROM posts
JOIN users ON (users.username = posts.post_creator)
WHERE category_id=:category_id AND topic_id=:topic_id

 ドル記号は PHP のものであり、MySQL のものではありません。

return $row['$username'];

次のようにする必要があります。

return $row['username'];
于 2012-12-28T11:42:53.090 に答える
0

コードのどこで mysql_connect と mysql_select_db を呼び出していますか?

私の経験では、できるだけ早く接続関数を呼び出し、返されたリソースをグローバル変数にロードして、すべての関数で使用できるようにすることをお勧めします。例えば:

global $dbHandle;
$dbHandle = mysql_connect("server string");

次に、関数は次のようになります。

function getusername($username) {
global $dbHandle;
$sql = "SELECT username FROM users WHERE id='".$username."' LIMIT 1";
$res = mysql_query($sql, $dbHandle) or die(mysql_error());
$row = mysql_fetch_assoc($res);
return $row['$username'];
}
于 2012-12-28T11:42:27.107 に答える