mysql insert into 以数组的形式插入表

在项目中用php+mysql,需要插入数据,但是数据库表字段又很长,如果用常规的insert into table (c) values ('dd')的话,将是很长的sql语句,而且一不小心,就弄错了。所以一般都用数组来操作,好多框架都有专门的功能,例如thinkphp的表映射,可用
$result= $model->add($post) //$post为和表字段对应的数组

但是原生的怎么做,下面是我总结的,虽然繁琐了一点,但绝对可行;例:

$link = mysql_connect('localhost','root','pwd');
mysql_select_db('db',$link);
$data['a'] = $post['a'];
$data['b'] = $post['b'];
$data['c'] = $post['c'];
$data['c'] = $post['c'];
$data['d'] = $post['d'];
$data['e'] = $post['e'];
$data['f'] = $post['f'];
$data['g'] = $post['g'];
//a,b,c,d,e,f,g为表的字段

foreach($data as $k=>$v){
     $k1[] = '`'.$k.'`';  //将字段作为一个数组;
     $v1[] = '"'.$v.'"';  //将插入的值作为一个数组; 

}
   $strv.=implode(',',$v1);   
   $strk.=implode(",",$k1); 
$sql = "insert into tb ($strk) values ($strv)";
mysql_query($sql); 

目前,就这样做,还没有想更好的方法。


在网上也有这样做的,不过我还没有测试。

第一步:我们先来创建一个表格来存储数组变量的值,就是用mysql自带的test数据库吧

Use test;

Creat table ‘NEIL’ ( ‘ID’ int(20) primary key not null,

‘Major’ varchar(25) not null);

第二步:我们来建立一个复选框页面用来模拟一个实例PHP数组 index.html

<body>

<form method="post" action="show.php">

ID: <input type=”text” name=”id”><br>

<input type="checkbox" name="teach[0]" value="online">Online<br>

<input type="checkbox" name="teach[1]" value="video">video<br>

<input type="checkbox" name="teach[2]" value="face">Face-to-Face<br>

<input type="submit" value="submit">

</form>

第三步:我们来描述show.php

Index.html通过post 将变量提交给show.php来处理,我们先来写show.php代码

<?php

$db_name=”test”;

$table_name=”neil”;

$connection= @mysql_connect(“localhost”,”root”,”root”) or die(mysql_error());

$db= @mysql_select_db($db_name,$connection) or die (mysql_error());

/*这里我们来进行数组变量的处理*/

$value=’’; //定义一个变量value初始化为空

Foreach($_POST[“teach”] as $key)

{ $value.=$key.’,’;} /*将数组值传递给中间变量key, 由key 将值传依次递给变量value */

/*插入语句*/

$sql=”insert into neil values (‘$_POST[id]’,’$value’)”;

$query= @mysql_query($sql,$connection) or die(mysql_error());

?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值