【问题标题】:Insert data php mysql插入数据 php mysql
【发布时间】:2016-01-31 09:18:29
【问题描述】:

这是我的问题的完整代码,我会解释它:

<form name="form1" action="" method="POST">
<table>
  <tr>
    <th>ORDER TYPE</th>
    <th>ITEM CODE</th>
    <th>ITEM NAME</th>
    <th>ACTION</th>
  </tr>
  <?php
    $sql = "SELECT * FROM product";
    $i = 1; //to generate an unique id and name attr
    while($data = mysql_fetch_array($sql)){
       $itemcode = $data['cars_kd'];
       echo "<tr> <td><select name='select'><option>--Select--</option><option value='0'>Distributor</option><option value='1'>Retail</option>
       <input id='id$i' name='name$i' /></select></td>
       <td>$data['cars_kd']<input type='hidden' id='id$i' name='name$i' value='$itemcode'/></td>
       <td>$data['cars_name']</td>
       <td><input type='checkbox' name='check'/><input type='hidden' id='id$i' name='name$i'/></td> </tr> $i++";
     }
     ?>
     <input type="submit" name="save" value="Save" />
   </table>

在我上面的 PHP 代码中,我使用 $i 来生成唯一的 id 和名称 attr。在显示所有数据后,我将通过选中复选框来选择一些我想要的数据。在我上面的代码中,我有三个输入标签。 1.功能是在checkbox选中时保持select的值。 2. 显示 $data['cars_kd'] 功能是显示所有的数据记录。输入的值是我所接受的,然后我在第三个输入中表现得很好。 3.功能作为用户选择的参数。因此,我要插入的数据是订单类型(取自选择选项值)和项目代码(取自输入三)。我使用输入是因为我认为我必须有一个参数才能知道用户选择什么。

我希望这里的每个人都能理解我的解释。 希望任何建议:-)。 谢谢。

【问题讨论】:

  • 对于数组使用 name="name []"
  • 如前所述,考虑将输入名称更改为name[]name$i 不起作用,因为 PHP 只处理 &lt;?php ?&gt; 标签内的代码,而 name$i 显然不是。您可以通过使用输入数组的名称作为第一个键和特定输入控件的索引作为第二个键(即 $_POST["name"][0])来获取 $_POST 上输入数组的值。 Reference.
  • 我对这里得到答案的每个人表示感谢:-)

标签: php mysql insert


【解决方案1】:
  1. 在您的表单 action 中执行操作。现在它是空的

  2. 您需要为所有文本框命名name[] 而不是name$i 这意味着:-

&lt;input type="text" id="id$i" name="name$i" /&gt;$data['data']; 更改为&lt;input type="text" id="id$i" name="name[]" /&gt;$data['data'];

  1. 现在您将获得 $_POST['name'] 数组中的所有名称。

  2. 我假设您的表结构是(id,car_name),并且您想保存(1,Volvo)(2,Dukati) 等数据。我还假设id 是自动递增的主键。现在您需要执行以下操作:-

    $_POST['name'] = array('Volvo','Dukati','KTR','BMW');// now your POST array will look like this
    $data = $_POST['name'];
    $values = '';
    foreach($data as $dat){
       $values .= "(".$dat."),";
    }
    $values = trim($values,",");
    
    $sql = "INSERT INTO <table name> ('car_name') VALUES '".$values."'";
    echo $sql;
    

输出:- https://eval.in/510646

注意:- 它不是完整的代码,它只是一个示例,向您展示如何继续。谢谢

【讨论】:

  • 是否一样 $_POST['name'] = array('Volvo','Dukati','KTR','BMW'); $_POST['name'] = array($data['data']); ?因为我从我的桌子上得到了沃尔沃、宝马等,并用 while(mysql_fetch_array) 显示。
  • 在示例中插入的值为(Volvo),(Dukati),(KTR),(BMW),但为什么需要数组?你像字符串一样将数据存储在数据库中?!显示你的表结构?!我想你有: id=1;car=volvo;id=2;car=bmw; ...而且您不需要在同一行 2 中插入车名?
  • 如果你的表结构是:id=1;car1=bmw;car2=zaporojets...你需要通过insert into table (id,car1,car2)插入值('','bmw','zaporojets')
  • 我想在一个字段中插入它。好的,我会更新我的代码。等一下。
  • 我向这里所有得到答案的人表示感谢 :-)
【解决方案2】:

action="" 的路径放到这样的脚本/php/script.php

并为打印变量 $i 值添加 &lt;? echo ;?&gt;

**PHP **

 <form action="/script.php" method="POST">
   <input type="text" id="id<? echo $i; ?>" name="name<? echo $i; ?>" /><? echo $data['data'];?>

  <input type="submit" name="submit" value="Save"/>

【讨论】:

  • 我认为:.和我的一样: $data['data'];因为我在 php 数组中制作了这个标签。但我对此类代码的问题在于我的 PHP 代码无法将其作为 $_POST["name$i"] 运行,即使我已将其放入 @fusion3k 建议的数组中。希望另一个建议:-)
  • @A-2-A 的例子很好。如果您不知道如何使用它,请关闭此站点并拿起一本关于 PHP 的书并阅读它。你不需要$_POST["name$i"] 使用$_POST["name"] 并从one array 的表单中获取所有值name[] 并使用foreach 来获取所有值
【解决方案3】:

如果我理解你的问题,你可以这样尝试:

foreach( $_POST as $key => $val )
{
    if( preg_match( '/^name(\d+)$/',$key,$matches ) )
    {
        $name = $val;
    }
}

id 号在$matched[1] 中被捕获,所以 - 如果你想将它用作数组索引:

       $name[$matches[1]] = $val;

编辑:

如果您知道name 邮递区的确切数量,您也可以尝试其他方式。
假设总字段数为 5:

for( $i=1; $i<6; $i++ )
{
    $name = $_POST["name$i"];
}

【讨论】:

  • 我已经尝试过了: for( $i=1; $i
  • @RezaM 我试过了,对我来说效果很好。顺便说一句,其中一个答案有效,或者您现在甚至没有解决方案?
  • 我向这里所有得到答案的人表示感谢 :-)
【解决方案4】:
<?php 
include('conect_to_db.php');
?>
<form name="form1" action="/a.php" method="POST">  <? /* action= the path + filename of script witch catch post data and work with it*/ ?>
<? for($i=0;$i<3;$i++) { ?>
<input type="text" id="id<? echo $i; ?>" name="name[]" value="<? echo $data  ['data'];?>"\>
<? 
}
?>
<input type="submit" name="submit" value="Save"/>
</form>

<?
if(isset($_POST['name'])) {
$data =$_POST['name'];
foreach($data as $value) {
/*may be like this to see you your darling name1,name2,name3, but you can do simply*/
if(!isset($name1)) $name1=mysql_real_escape_string($value); else
if(!isset($name2)) $name2=mysql_real_escape_string($value); else
if(!isset($name3)) $name3=mysql_real_escape_string($value); else 
return;
}

$sql = "INSERT INTO table_namex (name1,name2,name3) VALUES (`$name1`,`$name2`,`$name3`)";
$res=mysql_query($sql);
echo 'result(1=good): '.$res.' \   query: '.$sql;

}
?>

【讨论】:

  • +10 到 @A-2-A 因为我使用了他的一些代码!这个Is it same $_POST['name'] = array('Volvo','Dukati','KTR','BMW'); with $_POST['name'] = array($data['data']); ?我省略了,你做吧
  • @Reza M I want to insert that in one field - 例如当你插入时需要$value=$name1.','.$name2.','.$name3; INSERT INTO table_name (name) VALUES ('$value')
猜你喜欢
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多