我是数据库新手,如何通过将 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();
}
}
这是我将项目存储到数据库中的方式。$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'。很简单的字符串。