我是一个相当新手的php编码器,在教程中得到这个PHP代码来创建一个随机生成的引用,但我并不完全理解代码
特别是,我不明白
a)第4行 - “行”来自何处。这是一个当场制作的名字。它可以很容易被称为“法拉利”
b)第9行 - “storedtext”来自哪里?它只是当场弥补?
c)基于代码,您是否知道数据库应该是什么样子。它只是一个名为“text”的数据库,里面有一个名为“quotables”的表吗?
<?
//
// count() gets the number of rows from database text--
//it assigns a number to rowcount
1 $rowcount = mysql_query("select count() as rows from text");
// don't understand what exactly is happening here, where did "rows" come from
2 while ($row = mysql_fetch_assoc($rowcount))
3 {
4 $max = $row["rows"];
5 }
// Selects an item's index at random
6 $rand = rand(1,$max)-1;
//there is a database table called "quotables?" taking one random row
7 $result = mysql_query("select from quotables limit $rand, 1");
8 $row = mysql_fetch_array($result);
//where does "storedText" come from?????
9 $randomOutput = $row['storedText'];
10 echo '<p>' . $randomOutput . '</p>';
11 ?>
答案 0 :(得分:3)
“行”来自哪里?
这是分配给SQL查询select count() as rows from text
中的值的名称。
“storedtext”来自哪里?
它似乎是quotables
表中字段的名称。
基于代码,你知道数据库应该是什么样子。它只是一个名为“text”的数据库,里面有一个名为“quotables”的表吗?
没有。我们不能对数据库名称说什么。但是此数据库包含表text
和quotables
,其中后者至少包含字段storedText
。
答案 1 :(得分:2)
a)是的。 b)它必须是数据库中的一列。在第7行,它正在拉动数据库中的所有列,但并不具体说明它的名称 c)不,你可以print_r($ row)来查看表结构(将打印出数组,显示所有列)。您还应该有权访问数据库(为了完成这项工作,您需要设置数据库和表),所以mysql_connect()和mysql_select_db()会告诉您主机/数据库的名称。
答案 2 :(得分:1)
a)行来自sql query "select count() as rows from text"
b)我认为第7行中有“*”因为没有指定列,所以如果*那么它选择该表中的所有列并且“storedText”就是其中的一列
c)文本,引用均为表格
答案 3 :(得分:1)
a)rows
来自SQL查询:
$rowcount = mysql_query("select count() as rows from text");
这是给count()列的名称。
b)storedText
是quotables
表中的一列,可能带有引号。
脚本的作用是从文本表中获取行数。 获取1到$ max范围内的随机数。 从quotables表中获取相应的报价。
答案 4 :(得分:1)
A)rows是第1行mysql查询中count()函数的别名。如果你将第1行中的行更改为ferrari然后将第4行中的行更改为ferrari,那么它仍然有用。
B)存储的文本来自第7行的第二个mysql查询。这将是该表中列的名称。
C)根据您提供的代码,我可以告诉您,您有一个我不知道名称的数据库,该数据库有两个表,一个名为text
,另一个名为quotables
我可以告诉你,quotables有一列名为storedText
。
答案 5 :(得分:0)
除了quotables
是一个表并且storedText
是一个列之外,SQL没有告诉我们任何内容。字符串中的名称显示在SELECT语句中,并在完成时存在。
答案 6 :(得分:0)
“rows”来自mysql表。这是列的名称。例如,如果你有两列的表,其中一个名为“price”,你应该在使用mysql_fetch_assoc后使用$ var ['price']。 'storedText'一样。
答案 7 :(得分:0)
ANS - 1 在while循环中,我们已将值赋给$ row ...
ANS - 2
如果您仔细查看了代码,在第8行,您再次为$ row赋值。 第8行mysql_fetch_array($ result)将以数组格式获取第1行的所有值。
“quotables”表中必须有一个名为“storedText”的列,以便它出现在$ row ['storedText']中。
你应该参考php手册了解mysql_fetch_array和mysql_fetch_assoc函数..
答案 8 :(得分:0)
第2行与a)相关
while ($row = mysql_fetch_assoc($rowcount))
只要括号内的表达式求值为真值,while
- 构造就会重复。在PHP中;赋值也是一个表达式,它计算分配的值,即$ row。在每次迭代之前,执行该函数并尝试从数据库中检索下一行。当它失败时,它将返回false
而不是一行,这反过来使循环结束,因为赋值表达式将评估为false,这是while
- 语句的终止条件
b)第9行 - “storedtext”来自哪里?它是刚刚在现场组成的吗?
它来自数据库中随机提取的结果。这是一列的价值。
c)基于代码,您是否知道数据库应该是什么样子。它只是一个名为“text”的数据库,里面有一个名为“quotables”的表吗?
我们只知道数据库至少有两个表text
和quotables
,后者至少有一列storedText
。
尝试获取随机引用。但是,逻辑不健全,很可能在所有情况下都不起作用。
基本上,它假设对于text
中的每一行,quoteables
中只有一个条目。如果是这样的话,首先你不需要两个表。因此,我假设quoteable可以包含任意数量的行,甚至更少,在这种情况下,您有时不会从查询中获得单个结果。这会使您的查询失败并且您的脚本会因为您尝试访问“false [”storedText“]而可以这么说。
答案 9 :(得分:0)
A
$rowcount = mysql_query("select count() as rows from text");
// the $rowcount is an array, the lines below get the values (that actually is just one)
// and put into $max variable
while ($row = mysql_fetch_assoc($rowcount))
{
$max = $row["rows"];
}
乙
//get the text from database based on randon limit offet
$result = mysql_query("select from quotables limit $rand, 1");
//put the value returned into $row variable
$row = mysql_fetch_array($result);
//get the storedText (that is a table column name), and put the value into $randomOutput
$randomOutput = $row['storedText'];
C: 基于代码,我不能确定什么是数据库模型。