【发布时间】:2014-07-24 06:26:12
【问题描述】:
我需要在另一个查询的 while 循环 内打开一个查询,以便它由第二个查询的结果驱动。
$r=new COM("ADODB.Recordset");
$g=new COM("ADODB.Recordset");
$g->Open("SELECT * FROM question ORDER BY ID;",$db);
while ($g->EOF == FALSE){
$ID=$g->Fields["ID"]->value;
$r->Open("SELECT * FROM Answers WHERE Username='".$_GET["Username"]."' AND questionID=".$ID.";",$db);
$g->MoveNext();
}
它不起作用..当我把$r->open(...)放在外面时没关系...但我需要使用第一个查询的结果..
【问题讨论】:
-
“它不起作用......”它怎么不起作用?它给出错误吗?它是一个空白的白屏吗?它是否给您不正确/不完整的结果?
-
致命错误:未捕获的异常 'com_exception' 带有消息 'Source: ADODB.Recordset
描述:对象已打开 -
您确定应该使用 $r->Open 进行查询吗?每次进行新查询时,您似乎都在打开与数据库的新连接。更好的方法是打开 1 个连接,然后使用 $r->Execute 进行查询。有关详细信息,请参阅php.net/manual/en/class.com.php。或者,正如我在回答中所建议的那样,您可以通过连接来避免执行多个查询。
-
@dognose 它是数据库连接
$sc = "C:\\Users\\a\\Desktop\\xampplite\\htdocs\\X\\Surveys.mdb"; $cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $sc . ";"; $db = new COM("ADODB.Connection"); $db->Open($sc);@stephen 它正在其他页面上工作(我正在使用 ms 访问)
标签: php mysql sql select while-loop