我正在设计一个桌子系统,让我可以创建一个小型的计划器。规划器本身是一个HTML表,它使用两个不同的MySQL表。
表格是:
Table_1 (date_id, suggestion_1, suggestion_2, suggestion_3, ...)
Table_2 (song_id, song_title, ...)
表1中的“date_id”列填充了日期,日期,日期,每个日期都有自己的建议组。在表1的每一行中,建议列的单元格分别用表2中“song_id”列中的单个标识号(“1293”,“1185”,“0984”)填充。
我正在试图弄清楚如何生成一个列出日期和建议的HTML表格,但不仅仅是数字,而是显示第二个表格中的歌曲标题。 (还有关于我想要显示的歌曲的其他信息,这就是为什么我有两张桌子而不是一张桌子。)
HTML表最终应如下所示:
HTML_Table(日历日期,歌曲标题a,歌曲标题b,歌曲标题c)
我对PHP / MySQL比较陌生,(并且自学成才,好吧,我有一本书)所以我花了大部分时间来弄清楚我应该如何定义我的问题 - 我现在明白我需要在第二个表中引用主键。我的问题是我该怎么做?我试图弄清楚我是否应该使用某种类型的JOIN,但我并不擅长它们,就像我一样。
我正在使用的这本书给出了一个特定实例的示例函数,我将其修改为供个人使用:
//convert the number of the 1st suggestion into a title
function get_suggest1($suggest_a) {
global $db;
$query = 'SELECT
song_title
FROM
draftsongref
WHERE
song_id = ' . $suggest_a;
$result = mysql_query($query, $db) or die(mysql_error($db));
$row = mysql_fetch_assoc($result);
extract($row);
return $song_title;
}
在此之下,我还包括:
//retrieve the suggestions for the mass
$query = 'SELECT
date_id, suggestion_1
FROM
draft_suggestions
ORDER BY
date_id ASC';
$result = mysql_query($query, $db) or die (mysql_error($db));
...
// loop through the results
while ($row = mysql_fetch_assoc($result)) {
extract($row);
$suggest1 = get_suggest1($suggest_a);
...所以我可以使用$suggest1
变量输出给定建议的特定song_title。我的问题是,每当我运行该函数时,我都会收到一条错误消息。
You have an error in your SQL syntax;
check the manual that corresponds to your
MySQL server version for the right syntax
to use near '' at line 6
现在,我到目前为止已经设法弄清楚它是指这个:
WHERE
song_id = ' . $suggest_a;
更具体地说,是“='。$ suggest_a;”部分,但我根本无法弄清楚如何解决这个特定问题。也许它是我的假设(如果变量参数$ suggest_a有一个特定的名称吗?),或者它可能是函数设计中的错误 - 当我使用原始示例时,它起作用,尽管原始参数/变量有没有其他对应物。
现在,我明白这与我提到的JOIN表有点不同,但这是我能够找到最合适的方法。任何帮助都将不胜感激。
答案 0 :(得分:1)
你的桌面设计错了。对于具有多列建议的日期而不是单行,该表应该是日期和单个建议,对于给定日期具有多个行。这使您可以对两个表进行简单连接,以获得每个日期的一组建议以及歌曲标题。
答案 1 :(得分:0)
// loop through the results
while ($row = mysql_fetch_assoc($result)) {
extract($row);
$suggest1 = get_suggest1($suggest_a);
我错误地使用相同的参数变量来定义函数($ suggest_a),而不是对任何查询信息做任何事情。
//retrieve the suggestions
$query = 'SELECT
date_id, suggestion_1
FROM
draft_suggestions
ORDER BY
date_id ASC';
$result = mysql_query($query, $db) or die (mysql_error($db));
我应该将正确的列变量放入函数的使用中:
// loop through the results
while ($row = mysql_fetch_assoc($result)) {
extract($row);
$suggest1 = get_suggest1($suggestion_1);
它没有用,因为它没有任何输出。一旦我给它使用了一些东西,它就可以了。
无论如何,感谢Jim Garrison提供关于桌子结构的提示 - 下次这个时候我肯定会利用它。