【问题标题】:Open a query inside while loop on another query在另一个查询的 while 循环中打开一个查询
【发布时间】: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


【解决方案1】:

为什么不使用连接将两个查询合并为一个?

"select Answers.ID, Question.ID from Answers inner join Questions where Questions.ID=Answers.QuestionID and Answers.Username=" . $_GET["Username"]

通过连接彼此相关的答案和问题来组合这两个表。

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 2013-11-23
    • 1970-01-01
    • 2011-07-05
    • 2017-06-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多