Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP搜索结果串联_Php_Mysql - Fatal编程技术网

PHP搜索结果串联

PHP搜索结果串联,php,mysql,Php,Mysql,我试图在php中找到一个方法,将mysql数据库中所有相关的搜索返回结果压缩成一个由逗号分隔的字符串。请参见下面的DB表php输出格式和php代码 海滩桌: bname length city_name Beach A 4 City Z Beach B 3 City X Beach C 7 City E 海滩类型表: bname act_type Beach A Swimming Beach A Surfing

我试图在php中找到一个方法,将mysql数据库中所有相关的搜索返回结果压缩成一个由逗号分隔的字符串。请参见下面的DB表php输出格式和php代码

海滩桌:

bname    length  city_name
Beach A  4       City Z
Beach B  3       City X
Beach C  7       City E
海滩类型表:

bname        act_type
Beach A      Swimming
Beach A      Surfing
Beach B      Surfing
Beach C      Swimming
Beach C      Fishing
Beach C      Surfing
我正在寻找的输出:

`beach`.`bname`    `beach_act_type`.`act_type`  
 Beach C           Swimming, Fishing, Surfing   
代替此输出格式:

`beach`.`bname`    `beach_act_type`.`act_type`  
 Beach C           Swimming 
 Beach C           Fishing  
 Beach C           Surfing  
我的php代码:

$conn = new mysqli('localhost','test','','beachproject');

if (!$conn) {
    die('DB Connection Error');
}

$search = $_POST['search'];
$search_sql="select `beach`.`bname`, `beach_act_type`.`act_type` 
from `beach` inner join `beach_act_types` 
on `beach`.`bname`=`beach_act_type`.`bname` 
where `beach`.`bname`='$search'";
$search_query=$conn->query($search_sql);

if ($search_query->num_rows > 0) {
    while($row = $search_query->fetch_assoc()) {
        echo "<table border='1' cellpadding='4'>
        <tr>
        <th>Beach Name</th>
        <th>Beach Activity Allowed</th>
        </tr>";

        echo "<tr>";
        echo "<td>" . $row['bname'] . "</td>";
        echo "<td>" . $row['act_type'] . "</td>";
        echo "</tr>";

        echo "</table>";
    }
} else {
    echo "No Search Results";
}
$conn=newmysqli('localhost','test','beachproject');
如果(!$conn){
die('DB连接错误');
}
$search=$_POST['search'];
$search\u sql=“选择`beach`.`bname`、`beach\u act\u type`.`act\u type`”
从'beach'内部连接'beach\u act\u types'
在'beach'。'bname`='beach\u act\u type`.'bname`
其中'beach`.'bname`='$search';
$search\u query=$conn->query($search\u sql);
如果($search\u query->num\u rows>0){
而($row=$search\u query->fetch\u assoc()){
回声“
海滩名称
泳滩开放
";
回声“;
回显“$row['bname']”;
回显“$row['act_type']”;
回声“;
回声“;
}
}否则{
回显“无搜索结果”;
}

您只是在对两个单独的表数据进行crrating,而这两个表数据不会给出您想要的结果,请尝试下面的代码 无法在不同的表数据中获取“,”。 试试这个

    <?php $conn = new
  mysqli('localhost','test','','beachproject');
  if (!$conn) { die('DB Connection
  Error'); }
  $search = $_POST['search'];
  $search_sql="select `beach`.`bname`,
 `beach_act_type`.`act_type` from
 `beach` inner join `beach_act_types` on
 `beach`.`bname`=`beach_act_type`.`
  bname` where
  `beach`.`bname`='$search'";
 $search_query=$conn
 >query($search_sql); 
 if ($search_query->num_rows > 0) { 
 while($row = $search_query
 >fetch_assoc()) { echo "<table
 border='1' cellpadding='4'>
 <tr> <th>Beach Name</th> <th>Beach
 Activity Allowed</th> </tr>"; echo "<tr>";
 echo "<td>" . $row['bname'] . , .
 $row['act_type']"</td>"; echo "</tr>";
 echo "</table>"; } } else { echo "No
 Search Results"; } ?>

您要查找的函数是
组\u CONCAT

SELECT 
    `beach`.`bname`, 
    GROUP_CONCAT(`beach_act_types`.`act_type`) types
FROM
    `beach`
INNER JOIN
    `beach_act_types` ON
        `beach`.`bname` = `beach_act_types`.`bname`
WHERE
    `beach`.`bname` = '$search'

PS。应该警告你有SQL注入的存在,考虑切换到准备好的语句。


你的回车键坏了吗?@nogad是的,我的回车键坏了,请复制并添加你自己。答案是irrelevant@AliveColdJuan以这样的态度,你是不会提升的。你的答案不可读,因此没有人会给出具体的答案。@AliveColdJuan第一:学习如何编写可读代码,第二:尝试实际阅读和理解问题,然后改变你的态度,然后看看下一个答案,试着从中学习:)警告:当使用
mysqli
时,您应该使用and将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。