十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
把数组转成json或其他字符串在写入数据库,不转换字符串无法写入或自由Array,我是没试过,反正我知道是无法写入,我都是转成json后在写入。
创新互联专注于企业营销型网站建设、网站重做改版、白河网站定制设计、自适应品牌网站建设、HTML5、购物商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为白河等各大城市提供网站开发制作服务。
?php
$array=array(
"data1"="data1",
"data2"=array(
"data22"="data22",
"data222"="data222"
),
"data3"="data3"
);
$encode=json_encode($array); //数据库写入转换
$addslashes=addslashes(json_encode($array)); //如果只用英文字符的话可以直接用上面,用中文或有带斜杠/,PHP写入数据库的时候会去掉斜杠/,所以addslashes函数在转换下写入
$decode=json_decode($array,true); //数据库读取转换
?
没用框架就直接拼接sql语句啊
$sql = 'insert into tablename(field1, field2, field3) values(val1, val2, val3), (val1, val2,val3)';
主要就是拼接values后面的内容,一个括号一条数据,拼接完执行数据库插入操作就行了;
如果数据量很大,注意每次拼接的sql不要太长了,数据库执行的sql也是有长度限制的
如果你使用thinkphp框架,可以有直接的语法提交数组到数据库。
或者可以考虑以下我编写的示例代码:
?php
header('Content-type:text/html;charset=utf-8');
$values = array('isbn'='0-672-31509-8','author'='王一','title'='php高级编程','price'=58.00);
$sql = sprintf('INSERT INTO %s (%s) VALUES ("%s")', 'books',
implode(', ', array_map('mysql_escape_string', array_keys($values))),
implode('", "',array_map('mysql_escape_string', $values)));
$db = new mysqli('localhost','root','root','books');
$db-query($sql);
?
$arr=array();//后台接收到的数据,二维数组
$str="array(";//设置起始字符串
for($i=0; $icount($arr[0]);$i++)
{
$str .= '"'+$arr[1][$i] . '"="' .$arr[0][$i] . '",';
if(($i+1) % 3 === 0)
{
$str .= ")";
$sql=" insert into tbname (goodsid,vaue) values($goodsid,'{$str}') "://构建sql语句
//执行添加,这个操作不用我写了吧
$str='';//$str清空
$sql='';//$sql清空
}
}
你试试,看看行不行,主要是拼字符串
PHP的话,使用foreach循环执行sql代码即可(可能运算量较大)
直接存数组中的字符串也可以。
如:
$a="0,1,2,3";
//$a=join(",",array(0,1,2,3)); 这样也可以
mysql_query("INSERT INTO admin (monday) VALUES($a)");
这样字段monday的就是0,1,2,3
(后一种具体答案,摘自adebug的回答,有改动)
首先你要学会查错,最简单的方式就是打印出来看。你可以在第一个变量$arr_ip下一行,把这个变量打印出来看是不是数组,如果是数组,直接存入数据库时就是array,你可以把数组json_encode一下,这样存入进去的就是序列化后的字符串了,但你拿出来时也要json_decode一下,把字符串还原成数组。