如何从PHP中的URL获取多个同名参数并将所有记录插入表中

Posted

技术标签:

【中文标题】如何从PHP中的URL获取多个同名参数并将所有记录插入表中【英文标题】:How to get multiple parameters with same name from a URL in PHP and insert all records into table 【发布时间】:2014-05-29 13:18:46 【问题描述】:

我正在使用 mysql 查询将多条记录插入表中。 在我的网址中,我得到了我输入的所有记录,但在数据库中它只更新我的最后一条记录。我在这里使用 onclick 函数来添加新的表格行。任何帮助。 这是我的代码

if (isset($_GET['submit']))

    require_once("shine_class.php");
    $s = new shine;
    $s->connection();
    $date1 = date_default_timezone_set('Asia/Kolkata');

    $date1= time() ;
    $newdate1 = date("d-m-Y", $date1);


    for ($i=0; $i < count($_GET['finished_product_name']); $i++ )
    
        $product =$_GET['finished_product_name'];
        $material = $_GET['material_name'];
        $quantity = $_GET['product_quantity'];

        // mysql_query("INSERT INTO material_used (product_name, material_name, product_quantity, date) VALUES ('$a', '$b', '$c','$newdate1')") or die(mysql_error());
        $insert ="insert into material_used set `product_name` = '".$product."', `material_name` = '".$material."', `product_quantity` = '".$quantity."',`date` = '".$newdate1."' ";                   
        $select = mysql_query($insert) or die(mysql_error());
    

【问题讨论】:

请在这里写下你的代码 您的查询在哪里,..如果您可以在此处粘贴您的查询 是的,我已将我的查询粘贴在这里,... 告诉我们你从 $_GET 中得到了什么..请从你发布数据的地方编写代码 如果我从表中插入两条记录,它将在 URL 中显示两条记录,但只更新一条记录,即最后一条记录,我的 URl 看起来像这样 localhost/shine/usedmaterial.php?finished_product_name=wallhanger- 10pin-oscar&material_name=materialA&product_quantity=10&finished_product_name=wallhanger-8pin-oscar&material_name=materialB&product_quantity=20&submit=Add+Now 【参考方案1】:

您尝试分配具有相同名称的值。所以您的最后一个值替换为现有值。

例如:您的网址看起来像,

http://www.example.com/index.php?finished_product_name=abc&material_name=xxx&finished_product_name=pqr&material_name=yyy

所以你的$_GET['finished_product_name'] 的值是pqr 而不是abc


如果您可以使用 include [] 更改字段名称,那么 PHP 将创建一个包含所有匹配值的数组:

http://www.example.com/index.php?id[]=123&version[]=3&id[]=234&version[]=4

您的网址示例,例如,

http://www.example.com/index.php?finished_product_name[]=abc&material_name[]=xxx&finished_product_name[]=pqr&material_name[]=yyy

你的 for 循环是:

for ($i=0; $i < count($_POST['finished_product_name']); $i++ )

    $product =$_POST['finished_product_name'][$i];
    $material = $_POST['material_name'][$i];
    $quantity = $_POST'product_quantity'][$i]; 

【讨论】:

嗨 Ajay 你能解释一下这个我如何更新我的代码来创建 php 数组??? 是的,您可以多次将finished_product_name 添加到您的网址中,这样您的值就会被现有值替换。 在我的 URL 中,如果我插入了两行,它总是向我显示所有值,然后它会像这样显示我.....finished_product_name=wallhanger-10pin-oscar&material_name=materialA&product_quantity=10&finished_product_name=wallhanger -8pin-oscar&material_name=materialB&product_quantity=20&submit=Add+Now 但只更新最后一条记录,就像在这种情况下只插入最后一条记录。 嘿,感谢 Ajay 现在正在工作.... _POST['finished_product_name'][$i]; $material = $_POST['material_name'][$i]; $quantity = $_POST['product_quantity'][$i];【参考方案2】:
$insert ="insert into material_used(product_name,material_name,product_quantity,date) VALUES( '$product',  '$material','.$quantiy','$newdate1')                  

【讨论】:

你漏掉了一个错字:$quantiyY【参考方案3】:

使用以下函数在数据库中插入数据

$data['col1']='value1';
$data['col2']='value2';
.
.
$data['coln']='valuen';

insert('table_name',$data);

    function Insert( $table, $condition )

    $sql = "INSERT INTO `$table` SET ";
    $content = null;
    foreach ( $condition as $k => $v )
    
        $v_str = null;
        if ( is_numeric($v) )
            $v_str = "'$v'";
        else if ( is_null($v) )
            $v_str = 'NULL';
        else
            $v_str = "'" . mysql_real_escape_string($v) . "'";

        $content .= "`$k`=$v_str,";
    
    $content = trim($content, ',');
    $sql .= $content;
    return $result = mysql_query($sql);

【讨论】:

以上是关于如何从PHP中的URL获取多个同名参数并将所有记录插入表中的主要内容,如果未能解决你的问题,请参考以下文章

如何从谷歌文本到 PHP 中的语音 API 中的 URL 参数获取性别声音?

如何从 URL 获取值并将其添加为联系表 7 中的隐藏字段

获取 url 中的参数

获取url参数

获取 url 参数

如何从javascript中的url获取参数值? [复制]