如何将数组插入Mysql表

时间:2014-09-19 22:58:18

标签: php mysql pdo

我想将一个数组($array)插入一个Mysql表(notification),我试过这个,但没有任何进入。我该如何解决这个问题?

$select = "SELECT * FROM addclique WHERE adder_id = :session_id";
$param1 = array ('session_id' => $_SESSION['id']);
$cliques = $db->query($select, $param1);

foreach($cliques as $key)
{
        $array[] = $key['clique_id'];        
}
$array[] = $key['clique_id']; 
$notijfy = new Notification();
$notijfy->addCircle($array);

function addCircle($id_involve){
    $escaped_values = array_map('mysql_real_escape_string', array_values($array));

    $sql2 = "INSERT INTO notification(id_involve) VALUES (:id_involve)";
    $param2 = array ('id_involve' => implode(", ", $escaped_values));
    $result2 = $this->db->query ($sql2, $param2);
}

1 个答案:

答案 0 :(得分:0)

有几种方法。 我会做这样简单的事情:

foreach($cliques as $key){

        $array[] = $key['clique_id'];   

}

$notijfy = new Notification();    
$notijfy->addCircle($array);    
function addCircle($array){
$insert_string = '';

$count = 0;
foreach ($array as $k => $v){

$count++;


${$k} = mysqli_real_escape_string($this->db, $v);

$insert_string .= "(" . ${$k} . ")";

if ($count < sizeof($array)){

$insert_string .= ",";

}

      }
$sql2 = "INSERT INTO notification(id_involve) VALUES $insert_string;";

$result2= $this->db->query ($sql2, $param2);

}

你的主要错误是你试图传递($在调用函数时传递一个数组,但在函数本身你的参数列为$ id_involve,当你显然需要一个$ array变量时,你在函数本身。我也无法理解你为什么要在一开始就在foreach循环之外的$ array变量中添加一个元素。没有任何意义。

而不是$this->db只使用你的连接变量。