php将2d数组推入mysql

时间:2010-04-24 15:39:49

标签: php mysql arrays 2d serialization

Hay All, 我似乎无法理解这个数字,我读到的例子。基本上我有一个2d数组,并希望将其插入MySQL。该数组包含几个字符串。

我无法让以下工作......

$value = addslashes(serialize($temp3));//temp3 is my 2d array, do i need to use keys? (i am not at the moment)
$query = "INSERT INTO table sip (id,keyword,data,flags) VALUES(\"$value\")"; 
mysql_query($query) or die("Failed Query");

谢谢大家,

4 个答案:

答案 0 :(得分:2)

不确定这是对你的问题的完整答案,但至少有几个可能的问题:

  • 你不应该使用addslashes;相反,使用mysql_real_escape_string
    • 知道有关数据库引擎特有的内容。
  • 在SQL查询中,不应使用双引号(")arround字符串值,而应使用单引号('
  • 在SQL查询中,values()部分中的字段应与字段列表中的字段数一样多:
    • 此处您有4个字段:id,keyword,data,flags
    • 但只有一个值:VALUES(\"$value\")
  • 您应该使用mysql_error()来了解执行SQL查询时遇到的确切错误
    • 这将帮助您找出查询中的问题; - )

答案 1 :(得分:0)

<?php

// let's assume we have a 2D array like this:
$temp3 = array(
    array(
        'some keywords',
        'sme data',
        'some flags',
    ),
    array(
        'some keywords',
        'sme data',
        'some flags',
    ),
    array(
        //...
    ),
);

// let's generate an appropriate string for insertion query
$aValues = array();
foreach ($temp3 as $aRow) {
    $aValues[] = "'" . implode("','", $aRow) . "'";
}
$sValues = "(" . implode("), (", $aValues) . ")";

// Now the $sValues should be something like this
$sValues = "('some keywords','some data', 'someflags'), ('some keywords','some data', 'someflags'), (...)";

// Now let's INSERT it.
$sQuery = "insert into `my_table` (`keywords`, `data`, `flags`) values $sValues";
mysql_query($sQuery);

答案 2 :(得分:0)

答案 3 :(得分:0)

试试这个:

// lets array 
$data_array = array(
    array('id'=>1,'name'=>'a'),
    array('id'=>2,'name'=>'b'),
    array('id'=>3,'name'=>'c'),
    array('id'=>4,'name'=>'d'),
    array('id'=>5,'name'=>'e')
)
;
$temp_array = array_map('implode', $data_array, array('","'   ,'","','","','","','","'));
echo $query =  'insert into TABLENAME (COL1, COL2) values( ("'.implode('"),("', $temp_array).'") )';
mysql_query($query);