【发布时间】:2015-02-15 19:44:24
【问题描述】:
我有一个具有以下结构的数据库:
<table border="2">
<tbody>
<tr>
<td>ID</td>
<td>numbering</td>
<td>country</td>
<td>operator</td>
<td>rate</td>
</tr>
<tr>
<td>1</td>
<td>12345</td>
<td>country1</td>
<td>operator1</td>
<td> </td>
</tr>
<tr>
<td>2</td>
<td>12345</td>
<td>country1</td>
<td>operator1</td>
<td> </td>
</tr>
<tr>
<td>3</td>
<td>12345</td>
<td>country1</td>
<td>operator1</td>
<td> </td>
</tr>
<tr>
<td>4</td>
<td>12345</td>
<td>country1</td>
<td>operator2</td>
<td> </td>
</tr>
<tr>
<td>5</td>
<td>12345</td>
<td>country1</td>
<td>operator2</td>
<td> </td>
</tr>
<tr>
<td>6</td>
<td>12345</td>
<td>country1</td>
<td>operator2</td>
<td> </td>
</tr>
</tbody>
</table>
我首先根据用户选择的国家查询运营商,并显示它们,但是我还想为每个运营商显示相应的编号集。这是我目前实现的代码:
<?php
$operator_rates= $wpdb->get_results("SELECT DISTINCT operator, rate FROM database WHERE country='$_GET[country]'");
foreach ( $operator_rates as $operator_rate ) {
$numbering = $wpdb->get_results("SELECT numbering FROM database");
echo '
<strong>'.$operator_rate->operator.'</strong><br/>'.$numbering;
} ?>
我得到的结果如下:
运算符 1
数组
运算符 2
数组
运算符 3
数组
我期望的结果是每个运算符都在其下方,每个运算符的编号集正好在其下方:
操作员 1
12345、12345、12345、12345
操作员 2
12345、12345、12345、12345
操作员 3
12345、12345、12345、12345
【问题讨论】:
-
你的实际输出是?
-
对不起,由于某种原因,图片没有上传,我做了一些复制输出的文本
-
警告:通过将
$_GET数据直接放入查询中,您创建了一个危险的SQL injection bug。 永远不要这样做。相反,请使用 WordPress prepared statements feature 正确转义所有数据参数。 -
我认为在您的第二个查询中,您需要指定 where = 运算符。也就是说,如果第二个查询的结果确实多于一行,那么您也需要循环该行
-
@MarcoMura 它肯定会产生不止一个结果,因为有多个运算符附加了不同的编号