0

这对你们中的一些人来说可能很容易,但我遇到了麻烦。如果查询数组中存在“$my_id”,我需要执行一个 mysql 查询来检索数据。像这样的东西,或者达到相同结果的想法......

mysql_query("SELECT myArray FROM myTable WHERE my_id IN (myArray) LIMIT 1")

有任何想法吗?

编辑:

表中的数组由逗号分隔

4

2 回答 2

1
mysql_query("SELECT myArray FROM myTable WHERE my_id IN ('".implode("', '", array_map('mysql_real_escape_string', $array))."') LIMIT 1");

编辑

我想我明白你在做什么。您可以为此使用 mysql LIKE,但它确实效率低下(它必须进行全表扫描)。您不应该将值列表存储在 mysql 的一个字段中。

您想在实体之间创建一对多的关系。因为您并没有真正向我们提供太多信息,所以我们将存储在您的表中的实体称为 foos。所以你有一个名为foos存储你的 foos 的表。每个 foo 都与许多条有关系,这些条当前存储在一个“数组”中。这称为一对多关系。这些酒吧需要在单独的表中调用bars。您将每行存储一个 bar,每个 bar 与一个 foo 相关联,因此您将 foo 的 id 与每个 bar 一起存储。如果您想查找哪些 foo 与某个 bar 相关联,您只需进行简单的连接。

如果 bar 可以在许多 foo 之间共享,这称为多对多映射。然后你需要一张表用于 foos,一张表用于 bar,第三张表用于将 foos 映射到 bar。然后可以搜索哪些 foo 与哪些 bar 相关联,哪些 bar 与哪些 foo 相关联。

于 2012-06-09T03:58:37.710 回答
0

如果它是一维数组 - 只需将其内爆:

implode("','", $array)

IN 采用逗号分隔值。http://www.w3schools.com/sql/sql_in.asp

于 2012-06-09T04:00:03.097 回答