我对下面的代码有一些问题。我想要做的是判断一个标签是否已经存在于表标签中,如果存在,则获取id
并将其放入id
表 blog_post_tags 中,或者如果它不存在,则创建它,获取id
并将其放入blog_post_tags 表。问题是,每当我尝试检查是否id
已经存在时,我都会收到错误消息告诉我trying to get property of non object
,但字段仍然被插入到另一个表中,并且带有id
of 0
(这不是标签的有效 id)。
这是代码:
foreach ($tags as $tag)
{
//search for the tag to see if it exists
//the problem is located in this line of code
if($select_stmt = $mysqli->prepare("SELECT id FROM tags WHERE name = ?"))
{
$select_stmt->bind_param("s",$tag);
$select_stmt->execute();
$result = $select_stmt->get_result();
//if the tag exists
if($select_stmt->num_rows != 0)
{
if($insert_stmt = $mysqli->prepare("INSERT INTO blog_post_tags (blog_post_id, tag_id) VALUES (?,?)"))
{
$insert_stmt->bind_param('ii', $blogid, $result);
$insert_stmt->execute();
}
}
else
{
if ($insert_stmt2 = $mysqli->prepare("INSERT INTO tags (name) VALUES (?)"))
{
$insert_stmt2->bind_param('s', $tag);
$insert_stmt2->execute();
$tagid = $mysqli->insert_id;
if ($insert_stmt3 = $mysqli->prepare("INSERT INTO blog_post_tags (blog_post_id, tag_id) VALUES (?, ?)"))
{
$insert_stmt3->bind_param('ii', $blogid, $tagid);
$insert_stmt3->execute();
}
}
}
}
}
在此先感谢您的帮助。
编辑
不知何故,“试图获取非对象的属性”消失了,我怀疑它可能是与服务器的连接错误,但我真的不能说,仍然表 blog_post_tags 被填充的字段没有任何意义, “标签 ID = 0”。我怀疑这可能与此处表达的问题有关:php 准备了 stmt 问题-在每个结果循环中更新数据 ¿ 如果问题与上面的链接有关,我该如何更正我的代码?