php - 如何将数组存储在数据库列中

标签 php mysql database forms

我一直试图在数据库列中存储一个数组,但还没有成功。

我研究 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 行。此表显示每场比赛的球队以及分数和结果的输入字段。 一个标题,三行游戏,游戏后面的输入字段,下面是一个 sumbit 按钮。

管理员可以使用下面的表单提交输入。我添加了 echo ,这样我就可以检查输出是否正确。 echo 就像一个魅力。 这就是事情没有按照我希望的方式发展的地方。我使用的 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 和游戏结果列中。

欢迎任何帮助或建议!

最佳答案

将整个数组存储在数据库列中的一种简单方法是将数组编码为 json ...在示例中,$sc1 是您要存储的数组

mysql_query("UPDATE games SET game_score1 = '". json_encode($sc1) . "' WHERE        
     games_id = [1,2,3,4,5,6,7,8,9] ");

然后当你从 colomnu 中获取你的数组时,它仍然是 json 格式,所以你需要这样做

$array = json_decode($result);

有时你的数组包含带有''的元素,你需要做的就是使用

addslashes(json_encode($sc1))

而不是使用

json_encode($sc1);

关于php - 如何将数组存储在数据库列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897051/

相关文章:

mysql - 使用tomcat+JSP+JDBC删除MySQL列时eclipse错误 “com.mysql.jdbc.exceptions.MySQLSyntaxErrorException”

sql - 来自规范化 SQL 数据库的数据的表格 View

java - 无法连接到000webhost.com的Mysql数据库

php - 拉维尔 5.3 : Sessions database not working as expected

php - 在 Woocommerce 管理员订单列表中显示自定义状态为 "all"的订单

php - Laravel 5 获取具有关系和多重关系的用户

javascript - ajax请求成功但看不到我的数据

mysql - Sequelize - Mysql foreignKey ADD CONSTRAINT 因 ALTER TABLE 而失败

database - 我会通过将大表拆分成几个小表来加速关系数据库吗?

android - 从android数据库中删除一行