私はHTMLフォームを "post"メソッドで提出しています。その後、foreachを使用して$ _POST名と一致するカラム名があるかどうかを確認します。もしそうでなければ、私はその列を作成します。次に、それぞれの適切な列に$ _POSTデータを格納します。foreachヒットリミットのPHPを使用したmySQLカラムの作成
フォーム全体(約500種類の異なるエントリ)を送信しようとするまで、すべてがうまくいくように見えました。 php関数は作成された列で停止します。それらのうち、最後の6列は、(提出された$ _POST情報の代わりに) "ヌル"の結果を返し、その前の20列は2つの正しい$ _POSTデータのみを持ちます。
print_r($ _ POST)で確認すると、すべてのデータが送信されたことが確認できます。私はphp_iniのメモリの制限やmax_execution_timeの変更を試みましたが、成功しませんでした。
これは私のforeach PHPのコードです:私は、残りの50列を作成し、完全に、現在作成された最後の30かそこらを更新することはできませんなぜ
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']);
}
誰かが説明できますか?
おかげで、あなたは最大列制限(4096)、あなたがテーブルの最大行サイズヒットしているヒットしていないものの
。これは、一般的に再考や再設計が必要なモデルの兆候です。 – arkascha
...それはMagento ... – CD001
**警告**: 'mysqli'と廃止予定の' mysql_query'関数を混用しないでください。これは重要なことです。あなたのコードは、間違ったバックエンドドライバを使用しているため、動作しない可能性があります。オブジェクト指向モードでmysqliを使うと、このような単純な間違いを避けることができます。 – tadman