我之前问过,但我觉得我的问题很糟糕,实际上并没有帮助我做我想做的事情,所以我将其删除并再次尝试。
我的数据库中有一个名为' game'列:k1,k1r,k2,k2r,k3,k3r,grp和周。周列自动插入一年中的一周,其他的是用户输入的赌博游戏。
然后我有一张叫做“匹配”的桌子。列:match1,match2,match3,grp,week。同样,与周列相同的过程。其他4我填写了我们应该打赌的比赛。 ' grp'我用“BS'和' VF'。
然后我有一个查询:
SELECT *
FROM game
WHERE week = '.$week.' AND grp = 'bs';
$week
已设为$week = Date('W');
它输出一个表格,在那里我将匹配项写入3列,然后在匹配项下的行中回显用户投注。但是,每次有新的比赛时我都不会改变php脚本,我希望它能从桌面上找到#match;#39;。这样,我还将旧匹配保留在数据库中。
所以,现在我的问题:)
我想做的是:
'SELECT * FROM game WHERE week = '.$week.' AND grp = 'bs'
JOIN * FROM matches WHERE week = '.$week.' AND grp = 'bs';
但是你现在可能已经无法工作了:/
在我的另一个问题中,我忘了提及' grp'专栏并且无法弄清楚如何插入它。
为了回应它,我使用了:
while ($row = mysqli_fetch_array($query)) {
$no = 1;
$amount = $row['amount'] == 0 ? '' : number_format($row['amount']);
echo '<tr>
<td><strong>'.$row['name'].'</strong></td>
<td>'.$row['k1']."<br />".$row['k1r'].'</td>
<td>'.$row['k2']."<br />".$row['k2r'].'</td>
<td>'.$row['k3']."<br />".$row['k3r'].'</td> }
但我想得到这样的结果:
| |Match1 |Match2 |Match3 |
|User1 |2-0 |2-1 |2-2 |
|User2 |1-1 |2-2 |1-2 |
等等......&#39;匹配&#39;从&#39;匹配&#39; -table中选择,投注从&#39;游戏&#39; -table中选择。所以我只需要来自&#39; Matches&#39;的一行。作为标题然后循环播放游戏&#39;
中的行创作是:
CREATE TABLE `game`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) DEFAULT NULL,
`user` varchar(20) COLLATE utf8_danish_ci DEFAULT NULL,
`name` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`k1` varchar(1) COLLATE utf8_danish_ci DEFAULT NULL,
`k1r` varchar(10) COLLATE utf8_danish_ci DEFAULT NULL,
`k2` varchar(1) COLLATE utf8_danish_ci DEFAULT NULL,
`k2r` varchar(10) COLLATE utf8_danish_ci DEFAULT NULL,
`k3` varchar(1) COLLATE utf8_danish_ci DEFAULT NULL,
`k3r` varchar(10) COLLATE utf8_danish_ci DEFAULT NULL,
`week` int(2) DEFAULT NULL,
`grp` varchar(11) COLLATE utf8_danish_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_index` (`uid`,`week`,`grp`)
) ENGINE=MyISAM AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci
和
CREATE TABLE `udvalgte_kampe`
(
`hold1` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`hold2` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`hold3` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`hold4` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`hold5` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`hold6` varchar(50) COLLATE utf8_danish_ci DEFAULT NULL,
`week` int(2) DEFAULT NULL,
`grp` varchar(11) COLLATE utf8_danish_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci
但那我该怎么办?
答案 0 :(得分:0)
请注意使用$ var进行sql注入,并且可以使用正确的引号来避免字符串连接。
你的第二个查询是sintax for join是 是不是你应该使用这个sintax
"SELECT * FROM game
JOIN matches on game.week = matches.week
where WHERE game.week = '$week' AND game.grp = 'bs'";
而不是
'SELECT * FROM game WHERE week = '.$week.' AND grp = 'bs'
JOIN * FROM matches WHERE week = '.$week.' AND grp = 'bs';
答案 1 :(得分:0)
如果您使用上一个答案中的SQL,我认为这大致是您在PHP中需要的:
$headerPrinted = $false;
while ($row = mysqli_fetch_array($query)) {
if (!headerPrinted) {
echo '<th>
<td></td>
<td>'.$row['hold1'].'</td>
<td>'.$row['hold2'].'</td>
<td>'.$row['hold3'].'</td>
</th>';
$headerPrinted = $true;
}
$no = 1;
$amount = $row['amount'] == 0 ? '' : number_format($row['amount']);
echo '<tr>
<td><strong>'.$row['name'].'</strong></td>
<td>'.$row['k1']."<br />".$row['k1r'].'</td>
<td>'.$row['k2']."<br />".$row['k2r'].'</td>
<td>'.$row['k3']."<br />".$row['k3r'].'</td>';
}
我假设hol1,hold2和hold3是您要用于标题的列。
我不是说这是达到你想要的最佳方式,但它可能足以满足你目前的经验水平。