Php 将结果合并到分解的一个表行中

Php 将结果合并到分解的一个表行中,php,mysql,Php,Mysql,我有以下代码: <?php while ($rows = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $combi = explode(",", $rows['keyword_id']); foreach($combi as $keyword_ids) { $sql = "SELECT keyword from keyword where keyword_id = '$keyword_ids'";

我有以下代码:

<?php

while ($rows = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $combi = explode(",", $rows['keyword_id']);
    foreach($combi as $keyword_ids) {
        $sql = "SELECT keyword from keyword where keyword_id = '$keyword_ids'";
        $results = mysqli_query($con, $sql) or die("Error: " + mysqli_error($con));
        while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
            $keyword_name = $row['keyword'];

            // $data[] = $row['keyword'];
            // $keyword_name = implode(', ', $data);

        }
    }

    echo '<tr>';
    echo '<td class="telco_name">' . $rows['name'] . '<input type="hidden" class="cross_sell_id" value=' . $rows['id'] . '> <input type="hidden" class="telco_id" value=' . $rows['tid'] . ' > </td>';
    echo '<td class="keyword_name">' . $keyword_name . ' <input type="hidden" class="keyword_id" value=' . $rows['keyword_id'] . ' > </td>';
    echo '<td class="main_cross" style="width:100px;">' . $rows['main_message'] . '</td>';
    echo '<td class="alternate_cross">' . $rows['alternate_message'] . '</td>';
    echo '<td class="start_date">' . $rows['start_timestamp'] . ' </td>';
    echo '<td class="end_date">' . $rows['end_timestamp'] . ' </td>';
我想在我的输出上是这样的

<tr>
    <td> keyword_name, keyword_name </td>
    <td> keyword_name </td>
<tr>
我该怎么做


从数据库保存的数据。关键字\u id是逗号分隔的。

因为您已经有了逗号分隔字符串中的id,您可以使用in在一个查询中获取所有关键字

while ($rows = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $sql = "SELECT keyword_id,keyword from keyword where keyword_id IN ({$rows['keyword_id']})";
    $results = mysqli_query($con, $sql) or die("Error: " + mysqli_error($con));
    $keywords = [];
    while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
        $keywords[$row['keyword_id']] = $row['keyword'];
    }
}

/* This line should display the keywords and set the value to the ids
 * however, it lacks both an id (for client side use) and a name (to 
 * send to the server)
 */
echo '<td class="keyword_name">' . implode(', ',$keywords) . ' <input type="hidden" class="keyword_id" value=' . implode(',',array_keys($keywords)) . ' > </td>';

由于您已经有逗号分隔字符串中的ID,因此可以使用in在一个查询中获取所有关键字

while ($rows = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $sql = "SELECT keyword_id,keyword from keyword where keyword_id IN ({$rows['keyword_id']})";
    $results = mysqli_query($con, $sql) or die("Error: " + mysqli_error($con));
    $keywords = [];
    while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
        $keywords[$row['keyword_id']] = $row['keyword'];
    }
}

/* This line should display the keywords and set the value to the ids
 * however, it lacks both an id (for client side use) and a name (to 
 * send to the server)
 */
echo '<td class="keyword_name">' . implode(', ',$keywords) . ' <input type="hidden" class="keyword_id" value=' . implode(',',array_keys($keywords)) . ' > </td>';

您希望tr是循环?还是仅一行?您希望tr是循环?还是仅一行?您好,先生。关于你的答案,我可以问一些问题吗?我很乐意回答一个问题。我现在的数据库中有3000多个数据,查询开始变慢。我能做些什么使查询再次快速进行吗?根据你的回答。谢谢你你有关键字id的索引吗?你可能想打开一个新问题,发布关键字表和引用它的表的模式,以及代码。您好,先生。关于你的答案,我可以问一些问题吗?我很乐意回答一个问题。我现在的数据库中有3000多个数据,查询开始变慢。我能做些什么使查询再次快速进行吗?根据你的回答。谢谢你你有关键字_id的索引吗?你可能想打开一个新问题,发布关键字表和引用它的表的架构,以及代码。