1

我有一个像这样回显的存储字符串

$string = 24,56,43,23,45;

我想从mysql中检索数据,所以我这样做了;

$getcompany = mysql_query("SELECT * FROM pages WHERE id = $string");

如果 id 匹配任何字符串,它应该显示该信息但没有任何反应。我尝试使用爆炸来分解字符串,但我不知道如何使查询循环遍历字符串以显示与字符串匹配的信息。

我希望对某人有意义:(请帮忙。

4

3 回答 3

6

使用IN

$string = "24,56,43,23,45";
$getcompany = mysql_query("SELECT * FROM pages WHERE id IN (" . $string . ")");

这将转化为查询:

SELECT *
FROM   pages
WHERE  id IN (24,56,43,23,45);

只要id是一个可以工作的数字字段。如果id是一个字符串,你可以修改一下:

$string = "24,56,43,23,45";
$args = "'" . implode("','", explode(",", $string)) . "'";
$getcompany = mysql_query("SELECT * FROM pages WHERE id IN (" . $args . ")");

这将转化为:

SELECT *
FROM   pages
WHERE  id IN ('24','56','43','23','45');
于 2013-06-20T19:26:02.607 回答
2

在这种情况下,您将使用IN

$nums = "'24','56','43','23','45'";
$query = "SELECT * FROM pages WHERE id IN (". $nums .");"
于 2013-06-20T19:25:51.517 回答
2

您要做的是首先在逗号上拆分字符串,然后IN在查询中使用子句:

$string = '24,56,43,23,45';
$string = explode(',', $string);

$getcompany = mysql_query("SELECT * FROM pages WHERE id IN($string)");

我假设您的id列是数字,所以这不应该需要在数字周围加上引号。

于 2013-06-20T19:27:11.113 回答