PHP / SQL从DB中选择id列表并在查询中使用它

时间:2015-10-17 20:45:28

标签: php mysql sql

您好我在我的网站上创建了一个页面,以便在我的数据库中找到任务。

我现在使用的方法,它的工作,但我必须每次都更新它。

$demande = "SELECT * FROM quest_quest WHERE id IN (584,585,586,587,589,599,601,617,608,615,616) LIMIT ".(($cPage-1)*$perPage).",$perPage"; 

相反,我想查询我的数据库并在我的查询中使用id

我有一个包含TagID和IDquest的表,我想查询以保存所有问题并在我的查询中使用它

示例:

$questsfind = mysql_query("SELECT * FROM `quest_statetag` WHERE idTag ='8'");

我希望有一个这样的变量(221,587,1155,1255,5585)

$demande = "SELECT * FROM quest_quest WHERE id IN ('".$questsfind."') LIMIT ".(($cPage-1)*$perPage).",$perPage"; 

nb:我的英语不是我的母语:S

2 个答案:

答案 0 :(得分:2)

我不确定我是否理解这个问题,但我相信您希望在变量(来自查询)中保留一堆ID,然后从中创建另一个查询?

$first = mysql_query("SELECT * FROM quest_quest WHERE id IN (1,2,3,4)");

if( ! $first )
    die('Something went wrong...');

$ids = array();

while( $row = mysql_fetch_assoc($first) ) {
    $ids[] = $row['id'];
}

$query_ids = implode(',', $ids);

$second = mysql_query("SELECT * FROM quest_statetag WHERE idTag IN ($query_ids)");

希望有帮助...

答案 1 :(得分:1)

首先您必须将关联数组转换为字符串

$questsfinds = implode(',', $questsfind);

那你可以试试FIND_IN_SET方法

SELECT * FROM quest_quest WHERE FIND_IN_SET(id,'$questsfinds');