【发布时间】:2014-07-22 20:19:05
【问题描述】:
我一直在尝试将数组存储在数据库列中,但尚未成功。
我已经研究 php 和 sql 两个星期了,我没有编程背景。所以请原谅我的无知。我敢肯定我犯了很多错误。
让我进一步解释一下我的情况。
我创建了一个网页,以便管理员可以填写有关某些游戏的一些数据。这是在登录过程之后。 当管理员到达这一点时,我现在不会为“正确”输入而烦恼。我只想获取数据库中的数据。
我用 mysql 创建了一个名为games 的表,并用我目前拥有的数据填充它:
+--------+--------+-----+-----+------+------+------+
|game_id |round_id|team1|team2|score1|score2|result|
+--------+--------+-----+-----+------+------+------+
| 1 | 1 | A | B | NULL | NULL | NULL |
| 2 | 1 | C | D | NULL | NULL | NULL |
| 3 | 1 | E | F | NULL | NULL | NULL |
| 4 | 2 | E | C | NULL | NULL | NULL |
| 5 | 2 | A | D | NULL | NULL | NULL |
| 6 | 2 | F | B | NULL | NULL | NULL |
+--------+--------+-----+-----+------+------+------+
然后我在一个 php 页面中创建了一个表单,它使用该表中的数据来显示每场比赛的球队。
管理员使用此表格填写游戏分数和结果。见下表。在上表中存储值也需要此表。
input.php
<?php
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$query="SELECT games_team1, games_team2 FROM games WHERE round_id = 1";
$result = mysql_query($query);
?>
<form action="someform.php" method="post">
<table id="inputgameresults">
<tbody>
<tr>
<th>Home</th>
<th>Score 1</th>
<th>-</th>
<th>Score 2</th>
<th>Away</th>
<th>Result</th>
</tr>
<?php while($row = mysql_fetch_array($result)) { ?>
<tr>
<td><?php echo $row['team1']; ?></td>
<td><input type="text" name="score1[]"/></td>
<td> - </td>
<td><input type="text" name="score2[]"/></td>
<td><?php echo $row['team2']; ?></td>
<td><input type="text" name="result[]"/></td>
</tr>
<?php } ?>
<tr>
<td></td>
<td</td>
<td</td>
<td</td>
<td</td>
<td><input type="submit" value="Submit"/></td>
</tr>
</tbody>
</table>
</form>
这会导致上述表格中的 3 行。此表显示每场比赛的球队以及得分和结果的输入字段。 一个标题,三行包含游戏,游戏后面的输入字段,以及下方的汇总按钮。
管理员可以使用以下表单提交输入。我添加了回声,以便检查输出是否正确。回声就像一个魅力。 这就是事情没有按照我希望的方式发展的地方。我使用的 sql 查询在表格中说明。它失败得很惨,可能是因为我缺乏知识。
form1.php
<?php
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$sc1 = $_POST['score1'];
$sc2 = $_POST['score2'];
$res = $_POST['result'];
foreach($sc1 as $value) {
echo "score team 1 $value<br/>";
mysql_query("UPDATE games SET game_score1 = '".$value[]"' WHERE games_id = [1,2,3] ");
}
foreach($sc2 as $value) {
echo "score team 2$value<br/>";
}
foreach($res as $value) {
echo "res $value<br/>";
}
?>
我敢肯定,除了主要问题之外,还有很多事情我可以改进,或者做得更有效率。虽然这不是我目前的主要关注点,但欢迎任何帮助:D
现在的主要重点是从数据库中正确位置的表单获取输入。表单中的数据需要在 score1、score2 和游戏结果列中发送到数据库。
欢迎任何帮助或建议!
【问题讨论】:
-
查看
$_POST变量的 PHP 文档中的此评论:php.net/manual/en/reserved.variables.post.php#87650。你应该做类似<input name="game_id[0][score1]" />的事情,其中0 是game_id。然后访问input.php中的关联数组,如同一评论中所述。 -
try: where games_id = "..." (在值周围使用引号)。另外,如果您想将数组存储在数据库中,请尝试查看序列化。
-
在数据库中存储诸如数组之类的数据通常是一个坏主意,如果不是不可能的话,这将使对其进行任何类型的有用搜索变得困难,有时这会奏效好的,但我敢肯定,情况确实如此,另一种方法是属性值表,它有点复杂,但仍然很容易,并保持您搜索数据的能力。