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的索引吗?你可能想打开一个新问题,发布关键字表和引用它的表的架构,以及代码。