【问题标题】:Inserting multiple rows in a while loop在while循环中插入多行
【发布时间】:2013-05-02 00:58:34
【问题描述】:

我正在尝试使用 implode 在 while 循环中插入多行,但似乎无法使其工作。我想插入多个名为“重量”的值。像值 30,20,15,10,5 以及剩余的 emp_id 和 task_id。

page1.php

$sql = mysql_query("SELECT 
                    task_tbl.task_id,
                    task_tbl.task_name,
                    task_tbl.task_sem,
                    task_tbl.task_yr,
                    task_tbl.post_id,
                    post_tbl.post_id,
                    post_tbl.post_name AS ppost_name
                    FROM 
                    task_tbl 
                    LEFT JOIN 
                    post_tbl
                    ON
                    task_tbl.post_id = post_tbl.post_id 
                    WHERE 
                    task_sem = '$sem' 
                    AND 
                    task_yr = '$yr' 
                    ORDER BY 
                    task_id ASC");

echo '<form action = "upds_peval.php" name = "add" method = "post">';

while($row = mysql_fetch_assoc($sql)){

        echo "<br/>";
        echo "<b>Employee ID No.:</b>"; 
        echo '<input size = "2" type = "text" name = "emp_id'.$id.'" value = "';
        echo $_POST['emp_id'];
        echo '"/>';
        echo "<br/>";   
        echo "<b>Work/Activity ID No.:</b> ";
        echo '<input size = "2" type = "text" name = "task_id'.$row['task_id'].'" value = "';
        echo $row['task_id'];
        echo '"/>';
        echo "<br/>";
        echo "<b>Work/Activity:</b> ";
        echo $row['task_name'];
        echo "<br/>";
        echo "<b>Weight:</b> ";
        echo '<input size = "1" type="text" name="weight" value = ""/>';
        echo "%";
        echo "<br/>";

        }

        echo '<input type="submit" name="submit" value="ADD"/>';
        echo "</form>"; 

输出如下:

员工编号:1001 工作/活动编号:2002 工作/活动:监督计算机的维护和故障排除 重量:[__]%

员工编号:1001 工作/活动编号:2003 工作/活动:监督软件安装和维护 重量:[__]%

员工编号:1001 工作/活动编号:2004 工作/活动:维护、监控和排除虚拟终端故障 重量:[__]%

|提交|

page2.php

mysql_connect ("localhost", "root","")  or die (mysql_error());
    mysql_select_db ("emp_db0");

    if(isset($_POST['submit'])){
    $_POST['weight'];


    $vals=implode(",",$_POST);  

    error_reporting(E_ALL ^ E_NOTICE);

    mysql_query("INSERT INTO peval_tbl(weight,task_id,emp_id) VALUES('$vals')");
    echo "<br/>";
    echo "You have successfully added work/activities!";
    echo "<br/>";   
    }

【问题讨论】:

  • 输出应该是,但你得到了什么?没有?输出错误?
  • 您是否将$_POST['weight'] 的值分配给任何变量?您的 $_POST 在您的声明 $vals = implode(",",$_POST) 中包含什么值?
  • 你为什么使用内爆?为什么不只是 '".$_POST['weight']."','".$_POST['task_id']."','".$_POST['emp_id']."'
  • 还有什么是 $_POST['weight'];在做什么?
  • page2.php 没有输出。我正在尝试调试。可能是错的。我还不知道。仍然猜测 wat 可以工作

标签: php loops while-loop implode


【解决方案1】:

好吧,根据我对您问题的印象,您想要一个可扩展的表单,您可以在其中以一个名称访问其所有实例?

表单示例的第一个实例:

<input size = "2" type = "text" name = "emp_id[]" value = "1">
<input size = "2" type = "text" name = "task_id[]" value = "5001">
<input size = "2" type = "text" name = "weight[]" value = "50">

第二个实例示例:

<input size = "2" type = "text" name = "emp_id[]" value = "2">
<input size = "2" type = "text" name = "task_id[]" value = "5003">
<input size = "2" type = "text" name = "weight[]" value = "30">

这会将您的帖子转换为数组

访问:

$var_emp_id = $_POST["emp_id"];
$var_task_id = $_POST["task_id"];
$var_weight_id = $_POST["weight"];

使用循环访问这些变量。 要访问 emp_id 的第一个实例,请使用:

$var_emp_id[0]; //will output 1
$var_emp_id[1]; //will output 2

$var_task_id[0]; //will output 5001
$var_task_id[1]; //will output 5003

将其插入您的数据库:

for ($i = 0; $i <= count($var_emp_id); $i++){
     mysql_query("INSERT INTO peval_tbl(weight,task_id,emp_id) VALUES('$weight[$i]','$var_task_id[$i]','$var_emp_id[$i]')");
}

【讨论】:

  • np :),但我建议您使用 PDO 或 mysqli 进行查询,mysql_query 已经被贬值了。
【解决方案2】:

您对 $_POST 数组的寻址不正确,因此与其重新编写脚本,不如试试这个。

将此行添加到您的 page2.php 代码中的 mysql_connect 之前

echo '<pre>' . print_r($_POST,true) . '</pre>';

这将转储一个漂亮的 post 数组打印,以便您可以看到数据是如何到达 $_POST 的。

【讨论】:

  • Array ( [emp_id] =&gt; 1001 [task_id5001] =&gt; 5001 [weight] =&gt; 90 [task_id5002] =&gt; 5002 [task_id5003] =&gt; 5003 [task_id5004] =&gt; 5004 [task_id5005] =&gt; 5005 [task_id5006] =&gt; 5006 [task_id5009] =&gt; 5009 [submit] =&gt; ADD )
  • 名称“wieght”是错误的。啧啧。如何一一调用并全部插入?
  • 使用 foreach,先生 @raziel2101 您可能想学习 PDO 或 MVC 框架,例如 CodeIgniter、CakePHP mysql_ * 由于安全等问题,不再使用函数。
【解决方案3】:
$sql = "select * from login where nombre !='carlos'";
$result = $conn->query($sql);
$index = 1;
while($row = mysqli_fetch_array($result)){
    $valor = $row["nombre"];
    $valor2 = $row["apellido"];
    $insertsql= "insert into lista (`dato1`,`dato2`)values ('$valor', now())";
    // mysql_query($insertsql);
    $conn->query($insertsql);
    $index++;
}

http://www.baulphp.com/insertar-multiples-registros-ciclo-while-php/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 2022-01-07
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2019-11-20
    • 2020-05-17
    • 2015-01-14
    相关资源
    最近更新 更多