2016-07-25 24 views
3

是否有任何方法可以增加只有一個PHP頁面的PHP max_input_vars限制。我正在使用CSV上傳和提取功能。其中csv數據將使用插入查詢保存到數據庫。但是,當我有更大的CSV數據試圖如約9000項我得到了這樣的錯誤:只增加一個PHP頁面的Max_input_vars限制

PHP的警告:未知:輸入變量超過1000爲了增加php.ini中的極限變化max_input_vars。

我知道我們需要更改php.ini或.htaccess中的限制值,但我不想爲了維護安全性而更改整個項目的限制。那麼是否有任何方法可以改變它只爲這個功能?

+0

如果您使用的是CSV格式的文件,爲什麼不能用['LOAD DATA'(http://dev.mysql.com/doc/refman/5.7/en /load-data.html)來導入它?這比一個巨大的聲明不那麼凌亂。 – tadman

回答

3

沒有辦法做到這一點。您必須在php.ini文件中更改它,因爲即使ini_set也不能更改它。

max_input_varsPHP_INI_PERDIR可變模式,這意味着它可以不使用ini_set(僅在php.ini,htaccess的或httpd.conf文件)

Source

你而改變但是,可以通過將此行添加到您的.htaccess來臨時更改該設置:

php_value max_input_vars 3000

Source

+0

Martin S .:好的。其實我對這個輸入變量有點困惑。當多選下拉菜單包含近9000個條目時,出現此錯誤。但在Post上,我們將選擇值作爲數組傳遞給一個輸入元素。這是選擇元素名稱。你能否描述一下這個max_input_vars的限制是什麼?是否可以通過POST傳遞的輸入元素的數量?如果這是爲什麼我的選擇下拉菜單顯示錯誤? – Zammuuz

+0

@ USER5615它是每個超全局允許的變量數量。我不知道爲什麼如果你不向我展示你的代碼,那麼你會得到那個錯誤,但我想你通過POST傳遞了太多的變量。 – Martin

+0

一個大的多選擇導致這個問題的原因是,每個選擇的選項都是作爲'fieldname [] = value'傳遞的。請注意,這看起來像一個單獨的表單字段。在解析數據並將其加載到變量中時,這會被視爲一個數組,但它仍將每個賦值計爲一個「輸入變量」。 – PaulC