-1

ユーザーのテキストを保持するテーブル (ノートブック) を作成しました。テーブルは次のようになります。

+------+------------+-------+------+--------+------------------------+
|  id  |  Username  | title | html | public |  create_date           |
|--------------------------------------------------------------------|
|   1  | sorge13248 | Test  | ...  |  n     |2012-11-24 9:00:00      |
+------+------------+-------+------+--------+------------------------+

id = INT(25) A_I NOT NULL
Username = VARCHAR(65) NOT NULL
title = VARCHAR(26) NOT NULL
html = LONGTEXT NOT NULL
public = VARCHAR(11) NOT NULL
create_date = TIMESTAMP CURRENT_TIMESTAMP NOT NULL

だから、私は試してみましたこのコードを使用して、ユーザーのすべてのノートブックのレコードを一覧表示するには:

$link = mysql_connect("localhost", "mysql_user", "password");
mysql_select_db("notebook", $link);

$result = mysql_query("SELECT * FROM notebook WHERE Username = '"$username."'", $link);

if(0 == mysql_num_rows($result)) {
    echo 'No notebook was created for this user';
}
else { 
    while(row = mysql_fetch_array($result)) {
       // do whatever you want with the data here
    }
}

コードは次のものから取得されました:クエリの行を一覧表示する方法、または単一のクエリを使用して「レコードなし」を表示する方法。テーブルで使用するために編集しました。

今、私は混乱しています。レコードを一覧表示するには、「//ここのデータでやりたいことは何でも」文字列に何を書かなければなりませんか?

編集:今、私はこのコードを持っていますが、Chromeは「HTTP 500エラー、内部サーバーエラー」と言います:

<!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">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Notebook</title>
</head>

<body>
<h1>Notebook</h1><br/>
<?=
$link = mysql_connect("localhost", "database_username", "password");
mysql_select_db("database_name", $link);

$result = mysql_query("SELECT * FROM notebook", $link);

// If if result set contains rows
if(0 == mysql_num_rows($result)) {
    echo 'No notebook was created for this user';
}
else { 
    while(row = mysql_fetch_array($result)) {
   printf( '%d: &quot;%s&quot; by %s<br />', $row['id'], 
                 htmlspecialchars($row['title']), 
                 htmlspecialchars($row['Username']) );
}
}
?>
</body>

</html>

エラーはどこにありますか? MySQL資格情報は正しく提供されています...

4

4 に答える 4

0

表示したいものでHTMLを形成すると、whileループは次のようになります。

while(row = mysql_fetch_array($result)) {
   printf( '%d: &quot;%s&quot; by %s<br />', $row['id'], 
                 htmlspecialchars($row['title']), 
                 htmlspecialchars($row['Username']) );
}

次のように、すべてのアイテムをリストします

1: "Test" by sorge13248

PS: 問題を回避するために、常に同じ命名規則を使用する必要があります。DB では、 を除くすべての列が小文字ですUsername)。

于 2012-11-24T13:29:19.067 に答える
0

例 : echo$row['title']を使用して、ユーザーのメモのタイトルを出力できます。

var_dump($row)詳細情報を表示するために使用します。

于 2012-11-24T13:26:31.057 に答える
0

まず第一に、mysql_関数の使用は将来的に非推奨になるため、お勧めできません。MySQLiまたはPDO APIを使用するようにコードを変更することを検討してください。

詳細については、php マニュアルの記事を参照してください: API の選択

PHPマニュアルで述べられているように、mysql_fetch_array関数:

結果行を連想配列、数値配列、またはその両方としてフェッチします

関数がfalseを返し、ループが終了するときに、結果のある他の行がなくなるまで次の行に移動します。

特定のケースでは、 $row 変数は次の結果を返します。

$row['id'] = 1;
$row['Username']= "sorge13248"; 
$row['title']= "Test"; 
$row['html']="... &";
$row['public']="n';
$row['create_date']="2012-11-24 9:00:00";   

したがって、do whatever you wantチュートリアルでは、上記のアプローチを使用してデータベースにアクセスすることで結果を返すことができることを意味していました。たとえば、特定のユーザーからの作成日をエコーすることに関心があるとします。次のようにすることができます。

echo "<p>User: ".$row['Username']." was created in: ". $row['create_date']</p>";

スクリプトが生成しているページに次を出力します。

<p>User: sorge1348 was created in: 2012-11-24 9:00:00</p>

お役に立てば幸いです、乾杯。

于 2012-11-24T13:40:58.610 に答える