-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
    }
}

代码取自:How to list rows for a query or display 'no records' using a single query,我已经对其进行了编辑,以便与我的表一起使用。

现在,我很困惑,我必须在“//对这里的数据做任何你想做的事情”字符串中写什么来列出记录?

编辑:现在,我有这段代码,但 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

示例:您可以使用 echo$row['title']打印用户的注释标题。

用于var_dump($row)查看更多信息。

于 2012-11-24T13:26:31.057 回答
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:您应该始终使用相同的命名约定以避免出现问题。在您的数据库中,所有列都是小写的,除了Username)。

于 2012-11-24T13:29:19.067 回答
0

首先,mysql_不鼓励使用函数,因为它将来会被弃用。考虑更改您的代码以使用MySQLiPDO 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>";

Wich 会将以下内容输出到脚本正在生成的页面:

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

我希望它有所帮助,干杯。

于 2012-11-24T13:40:58.610 回答
0

我在使用 mysql_fetch_array 时遇到了麻烦,因为它在 PHP 7.0.0 中被删除了。

对我有用的是:

$sql = "SELECT * FROM notebook;";
if($result = mysqli_query($conn, $sql))
{ 

    while($row = $result->fetch_object())
    {
       echo $row->username . "<br>";    
    } 
    $result -> free_result();
}
于 2021-09-15T15:10:53.320 回答