以下のコードに問題があります。私がやろうとしているのは、タグが既にテーブル タグに存在するかどうかを確認することです。存在する場合は、取得してテーブル blog_post_tags にid
配置するid
か、存在しない場合は、作成して取得し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 は意味をなさないフィールドで埋められています。 「tag_id = 0」。ここで表現されている問題と関係があるのではないかと思います: php prepare stmt problem- update data at each result loop ¿