我正在努力解决一些SQL/php语法问题。
我正在试着写两个函数。
第一个将查询数据库并返回匹配特定条件的数字数组。
第二个函数将查询数据库,并使用第一个函数中的值来帮助选择我要查找的数据。
到目前为止,我对第一个函数的了解如下:
$sql = "SELECT requestee_id FROM user_relationships WHERE requester_id = '$uid' AND rtid = '13'";
$resulto = mysql_query($sqlo) or die(mysql_error());
while($rowo = mysql_fetch_array($resulto)){
}如何完成此操作,使其返回一个包含requestee_id值的数组?
下面是我的第二个问题:
$query = "SELECT * FROM {votingapi_vote} vv WHERE ". drigg_votingapi_query('vv', FALSE) ." AND vv.content_type = 'node' AND vv.content_id = %d";我想在这个查询中添加另一个WHERE条件,其中vv.uid是我的第一个函数中数组中的一个值。第二个函数返回一个为故事投票的人的列表。我想要返回,不是所有投票的人,而是特定用户的朋友。
如何完成第一个查询并将它的值放入第二个查询中?
发布于 2009-12-30 19:09:38
您可以使用子查询在一个查询中完成此操作:
$query = "SELECT * FROM
{votingapi_vote} vv
WHERE
". drigg_votingapi_query('vv', FALSE) ."
AND
vv.content_type = 'node'
AND
vv.content_id = %d
AND
vv.uid IN (SELECT
requestee_id
FROM
user_relationships
WHERE
requester_id = '$uid'
AND
rtid = '13')";发布于 2009-12-30 18:58:51
在您的第一个查询中已经有了一个数组,它是$rowo变量,您可以通过运行以下命令来查看其中的内容:
echo("<pre>".print_r($rowo,true)."</pre>");然后,可以使用SQL IN子句根据第一个查询的结果来约束第二个查询。只要你的数组看起来像这样:
array (
[0] => 12
[1] => 43
[2] => 45
[3] => 60
)然后,您可以使用以下命令:
$in_clause=implode(",",$rowo); // converts the array to 12,43,45,60
$query = "SELECT * FROM {votingapi_vote} vv WHERE ". drigg_votingapi_query('vv', FALSE) ." AND vv.content_type = 'node' AND vv.content_id = %d AND your_id IN ".$in_clause.";";根据第一个查询的数组内容,这段代码可能无法工作,因此请按照建议运行print_r代码,并将数组的内容发送回此处。
希望这能有所帮助。
https://stackoverflow.com/questions/1979561
复制相似问题