php - 我有这段代码,它工作正常,但我想将 having 代码更改为另一个结构

标签 php mysql join

这是我目前的代码,运行良好:

  <?php
    $sql = "SELECT * FROM te_events order by eventTitle ASC ";
    $result = $conn->query($sql);

    while($row = $result->fetch_assoc()) 
    {
        $venueID = $row['venueID'];
        $catID = $row['catID'];

        $sql2 = "SELECT * FROM te_venue where venueID='$venueID'";
        $result2 = $conn->query($sql2);

        while($row2 = $result2->fetch_assoc()) 
        {
            $venueName = $row2['venueName'];
        }

        $sql3 = "SELECT * FROM te_category where catID='$catID'";
        $result3 = $conn->query($sql3);

        while($row3 = $result3->fetch_assoc()) 
        {
            $catName = $row3['catDesc'];
        }

?>

但是我想把它改成这种格式。我只能做到这一点不能比这更进一步我得到错误。

<?php
    $sql ="SELECT eventTitle, eventID, venueID, catID, eventStartDate, eventEndDate, eventPrice FROM te_events ORDER BY eventTitle ASC";
    $queryresult = mysqli_query($conn, $sql) or die(mysqli_error($conn));
    while ($row = mysqli_fetch_array($queryresult)) {

        $venueID = $row['venueID'];
        $catID = $row['catID'];
        $venueName = $row['venueName'];
        $catName = $row['catDesc'];

?>

那我该怎么做呢?
如何连接两个表?

最佳答案

您应该能够 join额外的 2 个表来获取您需要的列。

SELECT e.eventTitle, e.eventID, e.venueID, e.catID, e.eventStartDate, e.eventEndDate, e.eventPrice, v.venueName, c.catDesc
 FROM te_events as e
join te_venue as v
on e.venueID = v.venueID
join te_category as c
on c.catID = e.catID
ORDER BY eventTitle ASC

您还应该避免将数据直接放入查询中。如果您需要这样做,请使用参数化查询。这就是 SQL 注入(inject)(或二级)发生的方式。

关于php - 我有这段代码,它工作正常,但我想将 having 代码更改为另一个结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600237/

相关文章:

mysql - 加入来自同一个表的三个查询

php - 这个 PHP 利用代码(在我的应用程序中找到)究竟是什么?

php - 在网页上实时显示通知和消息的最佳方式?

带 Codeigniter 的 PHP 队列系统。如何?

mysql - 建立一个基本的 friend 系统 : Get All Friends Query

mysql - 确定是 mysql 还是 percona 或 mariaDB

mysql - 连接 2 个 Select 语句并将第二个语句限制为第一个语句的结果

php - 重命名内部连接中的列名

javascript - AudioJS - 停止使用 javascript?

带引号的 Python 和 MySQL 查询