私はデータベース初心者ですが、PHP 配列の項目と MySQL 内破配列の項目を照合して行を検索するにはどうすればよいですか? 都合によりそのように保管されていますが、私が望むことを行うためのより良い方法があれば、私はすべての耳です. 私はこのようなものを探しています (私は手を振っている場所を示すために* * を使用しています):
$sql = "SELECT * FROM codeunits";
$sql .= " WHERE CASE WHEN private=1 THEN creatorID=:userID ELSE true END";
if (isset($tags))
{
$tag_ids = join(',',$tags);
$sql .= " AND ****items in mysql array 'tags' IN :tags";
if($stmt = $this->_db->prepare($sql)) {
$stmt->bindParam(":userID", $userID, PDO::PARAM_STR);
$stmt->bindParam(":tags", $tag_ids, PDO::PARAM_STR);
$stmt->execute();
$stmt->closeCursor();
}
}
アイテムをDBに保存する方法は次のとおりです。$values は、tags 列のクエリにバインドされているため、MySQL 配列と呼んでいます。
$tags = array();
foreach ($_POST['tags'] as $selectedOption)
{
$tags[] = $selectedOption;
}
$values = implode(",",array_values($tags));
$sql = "INSERT INTO "
."codeunits(tags)"
." VALUES(:tags)";
if($stmt = $this->_db->prepare($sql)) {
$stmt->bindParam(":tags", $values, PDO::PARAM_STR);
$stmt->execute();
$stmt->closeCursor();
return true;
}
これにより、データベースに「tag1,tag2,tag3」のようなエントリが作成されます。とてもシンプルな文字列。