標籤:post orm log res mod sql語句 type think 功能
在項目中用php+mysql,需要插入資料,但是資料庫表欄位又很長,如果用常規的insert into table (c) values (‘dd‘)的話,將是很長的sql語句,而且一不小心,就弄錯了。
所以一般都用數組來操作,好多架構都有專門的功能,例如thinkphp的表映射,可用
$result= $model->add($post) //$post為和表欄位對應的數組
但是原生的怎麼做,下面是我總結的,雖然看似繁瑣了一點,但絕對比原來有效率;代碼如下:
<?php//a,b,c,d為表的欄位,在我實際的項目中欄位有好多$data[‘a‘] = $_POST[‘a‘]; $data[‘b‘] = $_POST[‘b‘]; $data[‘c‘] = $_POST[‘c‘]; $data[‘d‘] = $_POST[‘d‘]; foreach($data as $k=>$v){ $k1[] = ‘`‘.$k.‘`‘; //將欄位作為一個數組; $v1[] = ‘"‘.$v.‘"‘; //將插入的值作為一個數組; } $strv.=implode(‘,‘,$v1); $strk.=implode(",",$k1);echo ‘<br>以下為插入代碼‘;$sql = "insert into tb ($strk) values ($strv)";echo $sql;echo ‘<br>以下為更新代碼‘;echo ‘<br>‘;foreach($data as $k=>$v){ $str[] = "`".$k."` = ‘".$v."‘"; //將欄位作為一個數組; } $strs=implode(‘,‘,$str);$sql = "update tb set $strs where id=1";echo $sql; ?> <form action="" method="post" name="asp"> 框1:<input type="text" name="a" value="1" /> 框2:<input type="text" name="b" value="2" /> 框3:<input type="text" name="c" value="3" /> 框4:<input type="text" name="d" value="4" /> <input type="submit" name= "Download" vaue="Download" /> </form>
這裡唯寫出產生mysql語句的代碼!
mysql 以數組的形式插入更新表