在向MYSQL表添加新列之后在PHP中编辑表数据

时间:2013-04-21 16:48:16

标签: php mysql insert col

我正在使用PHP和MYSQL创建一个有3页的网站;插入,更新和删除。插入页面将新列添加到数据库表。在我的更新页面中,我希望能够查看表中添加了新列的所有数据。我该怎么做?即如果现在插入后的11列而不是之前的10列我希望更新页面显示

col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 | col9 | col10 | col11

data | data | data | data | data | data | data | data | data | data | data

2 个答案:

答案 0 :(得分:1)

以下是我的一个表格的例子:

<table>
    <tr>

<?php
$mysqli = new mysqli("localhost", "user", "pass", "test");
/*
 * CREATE TABLE `test` (
 `col1` int(11) NOT NULL,
 `col2` int(11) NOT NULL
... // until col5
 */
$query = "SELECT column_name FROM information_schema.columns 
    WHERE table_name = 'test' AND table_schema = 'test'";
$result = $mysqli->query($query);

// INSERT INTO `test`.`test` (`col1`, `col2`, `col3`, `col4`, `col5`)
// VALUES ('10', '11', '12', '13', '14'), ('15', '16', '17', '18', '10');

$query2 = "SELECT * FROM test";
$result2 = $mysqli->query($query2);


while ($row = $result->fetch_assoc()) {

    ?>
        <td><?=$row['column_name'];?></td>

<?php
}
?>
        </tr>
        <tr>

        <?php
 while ($res = $result2->fetch_assoc()) {

    $count_columns = $result->num_rows;

        for ($i = 1; $i <= $count_columns; $i++) {
     ?>
        <td><?=$res['col'.$i.''];?></td>
        <?php
        }
        ?>
        </tr>
        <tr>
<?php

 }

输出:

col1    col2    col3    col4    col5
 10     11      12       13     14
 15     16      17       18     10

那不知道列名和它们的数量。它们具有相同的前缀“col”就足够了。

添加一个新列后:

    ALTER TABLE `test` ADD `col6` INT NOT NULL 
    UPDATE test SET col6 = col1+1

相同的代码(没有任何变化)产生:

col1    col2    col3    col4    col5    col6
 10     11      12       13     14      11
 15     16      17       18     10      16

P.S。:我仍然不鼓励这种表格结构,你需要动态添加列

答案 1 :(得分:0)

即使从PHP添加列(更改过程)对我来说也是不好的做法,可能会有不同的解决方案。您可以从information_schema中检索列:

SELECT column_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'yourTable';

$row['column_name']; //will output the actual result of columns for that table

同样对于实际结果,您可以将它们命名为“col1,col2”,这样您就可以遍历结果并接收变量,如

$row['col'.$i.''];

然后你可以收到每一栏的结果,也就是他们的名字。