【问题标题】:MYSQL PHP Use results of query to requery in foreach loop (complicated - I think)MYSQL PHP 使用查询结果在 foreach 循环中重新查询(复杂 - 我认为)
【发布时间】:2015-11-10 14:16:11
【问题描述】:

这就是我想做的事情:我正在制作一个列表制作应用程序,我有 2 个 MYSQL 数据库,一个包含一个表,其中包含每个列表的信息,例如名称,然后是第二个数据库,其中包含作为单个表的列表,列表项是行在那些表中。我想从第一个(查找)表中选择所有列表并回显一些信息,然后从相应的表中获取所有相应的列表项。我想用第一个表中的标题回显一个 div,然后使用该表对项目进行第二次查询。是否可以为返回的每一行执行一个 foreach 循环?

到目前为止,这是我的代码:

$mysqli2 = new mysqli("localhost", "****", "****", "full_lists");
if ($mysqli2->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " .$mysqli->connect_error;
}

$mysqli = new mysqli("localhost", "****", "****", "lists");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!($stmt = $mysqli->prepare("SELECT listname, dbname FROM lists"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}   

$stmt->bind_result($list, $dbname);

//First statement gets the name of another table in a different database

while ($stmt->fetch()) {
$stmt2 = $mysqli2->prepare("SELECT listitems FROM {$dbname}");
//Second statement uses first to run another select statement getting
//table rows
    $stmt2->execute();
    $stmt2->bind_result($item);
    while ($stmt2->fetch()) { //replace with foreach loop?
????

    }
    }

这是我卡住的地方,我想从第一个 select 语句中为每个 $list 回显一个 div,然后使用返回的 $dbname 来发出第二个语句。在每个 $div 中,我想将相应的行项放在列表中。有什么办法可以做一个 foreach 循环来做 foreach 结果而不是 while 循环?

编辑:这是表格的图片,位于不同的数据库但相同的服务器上 包含每个列表表信息的示例表: i.stack.imgur.com/7kEOn.jpg 示例列表项表: http://i.stack.imgur.com/XrzoD.png 感谢您的帮助

【问题讨论】:

  • 如果您从每个表中提供一些示例数据,我们可能会更容易理解
  • 为什么不使用左连接?还是组聚合?
  • 两个数据库在同一个数据库服务器上还是在不同的服务器上?
  • 同一台服务器,我将尽快添加设置/结构的图片
  • 编辑:每个表的数据如下所示:listitems 表:[1]:i.stack.imgur.com/XrzoD.png,信息表如下:[2]:i.stack.imgur.com/7kEOn.jpg

标签: php mysql foreach prepare


【解决方案1】:

在这些情况下使用 while 循环并没有错,根据你所说的,你可以试试这个:

while ($stmt->fetch()) {
    $stmt2 = $mysqli2->prepare("SELECT listitems FROM {$dbname}");

    $stmt2->execute();
    $stmt2->bind_result($item);

    echo '<div>';
    echo '<ol>';

    while ($stmt2->fetch()) {
        echo '<li>' . $item . '</li>';
    }

    echo '</ol>';
    echo '</div>';
}

【讨论】:

  • 非常感谢,稍微玩一下就可以了。
猜你喜欢
  • 2014-01-08
  • 2011-12-02
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 2011-10-18
  • 2014-05-14
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多