php - 通过 php 使用 foreach 命中限制创建 MySQL 列

标签 php mysql

我有一个使用“post”方法提交的 HTML 表单,之后我使用 foreach 来检查是否有与 $_POST 名称匹配的列名称;如果没有,我会创建该专栏。然后,我将 $_POST 数据存储在每个适当的列中。

一切似乎都工作正常,直到我尝试提交整个表单(大约 500 个不同的条目)。 php 函数在创建的 449 列处停止。其中,最后 6 列返回“null”结果(而不是提交的 $_POST 信息),而之前的 20 列只有 1 对 2 正确保存的 $_POST 数据。

当我检查 print_r($_POST) 时,我可以确认所有数据都已传输。我尝试在 php_ini 中更改内存限制或 max_execution_time 但没有成功。

这是我的 foreach php 代码:

foreach ($_POST as $key => $value){
        //$allKeys = array_keys($_POST);
        //$keyName=$allKeys[$i];
        $key=mysqli_real_escape_string($link, $key);
        $value= mysqli_real_escape_string($link, stripslashes($value));

        $result = mysql_query("SHOW COLUMNS FROM $table LIKE '".mysqli_real_escape_string($link, $key)."'");
        $exists = (mysqli_num_rows($result))?TRUE:FALSE;
        if(!($exists)) {
           $add=mysqli_query($link,"ALTER TABLE $table ADD (".$key." VARCHAR(65500))");           
        }       

        $query="INSERT INTO $table 
        ($crmNumberKey,$key) 
        VALUES 
        ('$crmNumberValue','$value')
        ON DUPLICATE KEY UPDATE
        $key='$value'";

        mysqli_query($link, $query);


        unset($_SESSION['profileInProgressCrmNumber']);
        unset($_SESSION['profileInProgressAccountName']);
        unset($_SESSION['profileInProgressAccountCity']);
        unset($_SESSION['profileInProgressAccountRep']);                                        
    }

有人可以解释一下为什么我无法创建剩余的 50 列并完全更新它们以及当前创建的最后 30 列左右吗?

谢谢

最佳答案

尽管您尚未达到最大列限制 (4096),但您已达到表的最大行大小:

Every table (regardless of storage engine) has a maximum row size of 65,535 bytes

This may be of more assistance as it has great discussions surrounding the efforts behind this question

关于php - 通过 php 使用 foreach 命中限制创建 MySQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40849481/

相关文章:

php - 我的数组在 php 中没有返回任何内容

javascript - 使用 angular JS 和 ionic 从 select 中获取选定的选项

mysql - 避免 "on update current_timestamp"

mysql - 从两个相似表中获取数据的 SQL 查询

javascript - 如何使用 php 和 jquery 更改带有选择选项的 sql 顺序值

PHP + MySql,带有多个错误检查的 OR 查询

php - Laravel mysqldump 创建空文件,但通过 xampp shell 执行时相同的命令可以工作

javascript - 获取数据 MySQL DB 并在 HTML 中显示

php - MySQL 计数记录与存储计数器

PHP、MySQL查询返回空数组,为什么?