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