2017-09-26 171 views
2

我有一个包含1200条记录的数组,但是当我提交表单时,代码会计算数组中的250条记录。为什么?Php数组发布错误

这是代码:

<?php 
if (isset($_POST['ok'])) { 
    echo count($_POST['precios']); 
    // showme only 250 récords 
} 
?> 
<form method='POST' action='productos.php'> 
    <button class="btn green" type="submit" name="ok"> Actualizar de forma masiva</button> 
    <?php 
    $query4334x = "select * from Productos"; 

    $result_categorias4334x = mysql_db_query($dbname, $query4334x) 
     or die("Failed Query of " . $query4334x); //guardo en una variable los registros obtenidos con el query 

    $numero5 = mysql_num_rows($result_categorias4334x); 
    echo $numero5; 
    // showme 1200 récords 

    while ($row = mysql_fetch_array($result_categorias4334x)) { 
     $precio = $row['Precio']; 
     ?> 
     <input type="text" name="precios[]" value="<?php echo $precio; ?>"> 
     <?php 
    } 
    ?> 
</form> 
+1

你为什么使用长弃用mysql_代码库的设置呢?它在很多年前已经停止使用,并且完全在PHP7中删除。使用这个库不应该编写新的代码。它使您容易受到SQL注入攻击(由于缺少参数化查询支持)以及潜在的其他未修复漏洞。尽快切换到使用mysqli或PDO,然后学习如何编写参数化查询以保护您的数据免受恶意输入。请参阅http://bobby-tables.com以获取有关风险的简单说明以及一些示例PHP代码以安全地编写查询。 – ADyson

+0

感谢您的信息。我会在bobby-tables.com –

回答

1

如果你不能在你的php.ini更改设置max_input_varspost_max_size

尝试像下面这对我的作品

implode()阵列成一个长字符串,它explode()在服务器端。

json_encode()也许可以工作。

实施例:

while ($row = mysql_fetch_array($result_categorias4334x)) { 
     $precio[] = $row['Precio']; 
    } 
<input type="text" name="precios" value="<?php echo implode(",",$precio); ?>"> 

// POST

<?php 
if (isset($_POST['ok'])) { 
    $precios = $_POST['precios']; 
    $preciosarr = explode(",", $precios); 
    print_r($preciosarr); 
} 
?> 

注:允许在元件的最大字符数。默认值是524288

+0

谢谢!我如何在帖子前做内爆? –

+0

@BraiKaler检查更新 –

+0

谢谢!但我需要一个输入来刷新价格。该代码showme只有一个输入 –

-2

如果这是一个环的一部分,则需要索引阵列

for ($i = 0; $i < count($_POST['precios']); $i++) { ?> 
    ... 
    <input type="text" name="precios[]" value="<?php echo $precio; ?>"> 
    ... 
    <?php 
} 

也查询,而不是回声使用本的print_r()var_dump()

print_r(count($_POST['precios'])); 
+0

如何通过POST变量循环帮助?用户想要显示来自数据库的数据,但后来发回的值太小。您还没有定义$ precio。 – ADyson

0

请尝试在你的php.ini更新以下设置

max_input_vars = 1500

的post_max_size = 64M

你只需根据自己的需要调整两个变量。

+0

我的服务器不允许我改变php.ini。其他方案? –

+0

你能确认你是否能够使用ini_set? ini_set('max_input_vars',1500); ini_set('post_max_size','64M'); –

+0

此设置在运行时不可更改,它们在执行脚本之前应用。 – Dmitri

0

如果你没有访问为php.ini,你可以尝试在.htaccess

php_value max_input_vars 1500 
php_value post_max_size 64M