我正在尝试使用PostgreSQL数据库在PHP中开发一个Q &网站。 我有一个动作来创建一个页面,其中有一个标题,正文,类别和标签。我设法插入所有这些字段,但我有一些问题插入多个标记值。将多个INSERTS合并到一个表中并使用多个表
我用这个函数来获取逗号分隔值到一个数组中,现在我想要在表tags
之后插入每个数组元素到数据库中的东西(避免重复),然后在我的多对多关系表questiontags
上插入:
$tags = explode(',', $_POST['tags']); //Comma separated values to an array
它打印是这样的:
Array ([0] => hello [1] => there [2] => this [3] => is [4] => a [5] => test)
动作/ create_question.php
$category = get_categoryID_by_name($_POST['category']);
$question = [
'userid' => auth_user('userid'),
'body' => $_POST['editor1'],
'title' => $_POST['title'],
'categoryid' => $category
];
create_question($question, $tags);
然后我的create_question
我应该插入标签。
function create_question($question, $tags) {
global $conn;
$query_publications=$conn->prepare("SELECT * FROM insert_into_questions(:body, :userid, :title, :categoryid);
");
$query_publications->execute($question);
}
我在想这样做这样的事情:
全球$康恩;
foreach ($tags as $tag) {
$query_publications=$conn->prepare("INSERT INTO tags(name) VALUES($tag);
");
$query_publications->execute($question);
}
但是,然后我需要标签ID插入我多到许多表。我是否需要创建另一个程序,get_tags_id
,然后获取tag_id
数组,然后在尝试使用标记时插入它们? 我什么时候执行查询?在两个插入之后或者在彼此之后?
对不起,任何误用的术语或我的新手问题。我是PHP的新手,我正在努力应对一些新的概念。
您需要在问题表和标签表上有主键(ID)。然后制作第三张只包含问题和标签ID的表格。 – miken32
我拥有它。我省略了这个,因为在我使用这种方法的问题上很清楚 –
插入后,您可以使用PDO的lastInsertId函数检索刚刚插入的行的主键。然后,您可以将数据添加到下一个表中,而不必执行单独的查询来首先获取主键。 http://php.net/manual/en/pdo.lastinsertid.php –