Php 如何向数据库中添加用coma分隔的数据

Php 如何向数据库中添加用coma分隔的数据,php,mysql,implode,Php,Mysql,Implode,我想将数据插入数据库。我有用逗号分隔的数据 我试着这样做,但看起来有点不对劲 $rand_post = ["3001182708", "3001182713", "3001183215"]; $id_post = '123456'; $prep = array(); foreach($rand_post as $v ) { $prep[] = "($id_post, $v)"; } print_r($prep); $sth = $db->prepare("INSERT INTO

我想将数据插入数据库。我有用逗号分隔的数据

我试着这样做,但看起来有点不对劲

$rand_post = ["3001182708", "3001182713", "3001183215"]; 
$id_post = '123456';

$prep = array();
foreach($rand_post as $v ) {
    $prep[] = "($id_post, $v)";
}
print_r($prep);
$sth = $db->prepare("INSERT INTO tes (`id_post`,`datas`) VALUES " . implode(', ', $prep));
$res = $sth->execute($prep);
我想像这样插入我的数据

id_post            rand_post
============       ================
123456             3001182708
123456             3001182713
123456             3001183215

你很接近了,但是不用粘合字符串,而是使用准备好的语句的能力。准备查询,然后在循环中使用不同的参数执行查询。也可以命名

$rand_post = ["3001182708", "3001182713", "3001183215"]; 
$id_post = '123456';

$prep = array();
$sth = $db->prepare("INSERT INTO tes (`id_post`,`datas`) VALUES (?, ?)");

foreach($rand_post as $v ) {
    $sth->execute(array($id_post, $v));
}
您可以找到更多信息

这应该行得通

$rand_post = ["3001182708", "3001182713", "3001183215"]; 
$id_post = '123456';

$prep = array();
foreach($rand_post as $v ) {
    $prep[] = "($id_post, $v)";
}

$dataToInsert = implode(', ', $prep);
$sth = $db->prepare("INSERT INTO tes VALUES " . $dataToInsert);
$res = $sth->execute($prep);

在准备报表时,您通过了吗?我没有使用
$prep
arraySorry,而是语法错误。我更新了答案,请测试使用Robert的答案是不好的做法,你应该避免循环内的查询。@MaratBadykov这比粘字符串而不是使用准备好的语句要好,这是很常见的做法。查询是在db端准备的,它实际做的是将参数绑定到这个准备好的查询。当然,这比你提出的解决方案要好。干杯,糟糕的练习。您应该避免在循环内进行查询。@MaratBadykov在循环内执行prepared语句并不是一个坏习惯。这与执行查询本身不同。不要给OP带来混乱。一般来说,批量或批处理查询通常比循环查询性能更好,因为您可以保存对DB的往返调用。@MaratBadykov如果数据集真的很大,则会有所不同。