【问题标题】:PHP images from a database来自数据库的 PHP 图像
【发布时间】:2015-01-07 17:14:44
【问题描述】:

我在一个项目中使用 XAMPP 及其内置的数据库功能。我有两个单独的酒店桌子图像列。我有用于显示一个图像的 php 代码,并希望将每个酒店的第二个图像与第一个图像并排显示。任何帮助都会很棒。代码如下:

            $date = '%';
            if (!empty($_GET['date'])) $date = $_GET['date'];

            $query = "SELECT hotels.image1 'IMG', hotels.name 'HOTEL', holidays.startdate 'DATE', holidays.id 'id'
                    FROM holidays
                    JOIN hotels ON holidays.hotelid = hotels.id
                    JOIN holidaytypes ON holidays.typeid = holidaytypes.id
                    JOIN pricebands ON holidays.bandid = pricebands.id WHERE 
                    hotels.id LIKE '$_GET[hotelid]' AND holidaytypes.id LIKE '$_GET[typeid]' AND 
                    pricebands.id LIKE '$_GET[bandid]' AND hotels.cityid LIKE '$_GET[cityid]' AND 
                    holidays.startdate LIKE '$date'";
            $results = mysqli_query($conn, $query) or die(mysqli_error($conn));


            while ($row = mysqli_fetch_array($results)) {
                echo "<a href='viewItem.php?id=$row[id]'><img src='images/$row[IMG]' alt='Hotel Image!' width='200' height='150'></a>"." ".$row["HOTEL"]." ".$row["DATE"]."<br>"; 
            }

【问题讨论】:

  • 嗯...你试过把第二张图片放在第一张旁边吗?
  • 你试过hotels.image1 'IMG1', hotels.image2 'IMG2' ??
  • 嗯...你试过什么吗?
  • 还有 10 个标志要走。我是不是该? :D
  • 警告:使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs从不$_GET数据直接放入查询中。

标签: php mysql xampp


【解决方案1】:

如果您有两个单独的列,那么您需要在 SQL 语句中选择它。大概是“image2”,所以只需给它一个名称并添加它。

SELECT hotels.image1 'IMG1', hotels.image2 'IMG2', 

另外请注意,您应该知道您的代码写得非常糟糕。我们都必须从某个地方开始,所以我只是想让您知道您正在使用非常过时的方法和结构糟糕的代码。如果你正在学习 PHP,你应该给自己找一本更新的书/老师。

您还应该考虑确保您更好地了解编程的基础知识。这是一个简单的问题,任何新手只要了解数据库和 PHP 之间的通信方式,就应该能够自行解决。

我建议尝试学习使用更简单的项目进行编程,并使其工作达到正确的标准,然后再转向像度假网站这样复杂的东西。从长远来看,你会感谢自己。

祝你好运。

【讨论】:

    【解决方案2】:

    如果两张图片在不同的列,则选择第二张与第一张相同的图片

    $query = "SELECT hotels.image1 'IMG1',hotels.image2 'IMG2', hotels.name 'HOTEL', holidays.startdate 'DATE', holidays.id 'id'
            FROM holidays
            JOIN hotels ON holidays.hotelid = hotels.id
            JOIN holidaytypes ON holidays.typeid = holidaytypes.id
            JOIN pricebands ON holidays.bandid = pricebands.id WHERE 
            hotels.id LIKE '$_GET[hotelid]' AND holidaytypes.id LIKE '$_GET[typeid]' AND 
            pricebands.id LIKE '$_GET[bandid]' AND hotels.cityid LIKE '$_GET[cityid]' AND 
            holidays.startdate LIKE '$date'";
    $results = mysqli_query($conn, $query) or die(mysqli_error($conn));
    
    
    while ($row = mysqli_fetch_array($results)) {
    echo "<a href='viewItem.php?id=$row[id]'><img src='images/$row[IMG1]' alt='Hotel Image!' width='200' height='150'></a>"." ".$row["HOTEL"]." ".$row["DATE"]."<br>";
    echo "<a href='viewItem.php?id=$row[id]'><img src='images/$row[IMG2]' width='200' height='150'></a>"; 
    }
    

    【讨论】:

    • 将 'image1' 和 'IMG' 和 'image2' 称为 'IMG1' 只会让这个糟糕的代码变得更糟。
    【解决方案3】:

    感谢您的反馈。我知道这些方法已经过时,但我不是 PHP 程序员。我得到了一个项目的代码,我的工作是围绕它编写一个网站并实现它。我将与给我代码的人交谈,并找出它为什么这么差。

    再次感谢您的回答。我已经尝试了所有方法,但它们似乎不起作用。

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 2012-02-03
      • 1970-01-01
      • 2015-01-24
      相关资源
      最近更新 更多