【问题标题】:Trying to get data from 2 databases with PHP尝试使用 PHP 从 2 个数据库中获取数据
【发布时间】:2018-06-19 07:55:10
【问题描述】:

我必须为我非常接近的一个学校项目创建一个预订系统,但后来出现了这个问题,我无法解决。

所以我希望你们能帮助我:)

这是从数据库(formulier.php)获取数据的PHP代码:

<div id="room1" style="margin-left: 10%;"><br><br>
    <img src=”source.php?id=2” width="150" height="150" />&nbsp;
    <?php
    $query = "SELECT * FROM dt_tb WHERE dt BETWEEN '2004-01-01' AND '2005-01-25'";
    /* SELECT * FROM dt_tb WHERE dt BETWEEN BETWEEN '$dt1' AND '$dt2' */
    $result = mysqli_query($connect,$query);

    if (mysqli_num_rows($result)) {
        while($row = $result->fetch_assoc()) {
            echo "HERE COMES THE DESCRIPTION &nbsp;";
            echo "&nbsp; check-in: ". $row["dt"] ." | check-out: ". $row["dt2"] ." ";
        }
    }
    else {
        echo "An error occured, Please choose another date.";
    }
    $connect->close();
    ?>
    <br><br><br>
    <form method="post" action="#">
        <input required type="submit" id="Reserve" name="Reserve" value="Book Now"  style="margin-left: 0.4%;">
    </form>
    <hr style="width: 65%;">
</div>

<div id="room1" style="margin-left: 10%;"><br><br>
    <img src=”source2.php?id=1” width="150" height="150" />&nbsp;
    <?php
    $query2 = "SELECT * FROM dt_tb WHERE dt BETWEEN '2000-01-01' AND '2100-01-25'";
    /* SELECT * FROM dt_tb WHERE dt BETWEEN BETWEEN '$dt1' AND '$dt2' */
    $result2 = mysqli_query($connect,$query2);
    if (mysqli_num_rows($result2)) {
        while($row2 = $result2->fetch_assoc()) {
            echo "HERE COMES THE DESCRIPTION &nbsp;";
            echo "&nbsp; check-in: ". $row2["dt"] ." | check-out: ". $row2["dt2"] ." ";
        }
    }
    else {
        echo "An error occured, Please choose another date.";
    }
    $connect->close();
    ?>
    <br><br><br>
    <form method="post" action="#">
        <input required type="submit" id="Reserve" name="Reserve" value="Book Now"  style="margin-left: 0.4%;">
    </form>
    <hr style="width: 65%;">
</div>

这是获取数据库中图片的PHP代码(source.php):

$query = "select * from images WHERE id = 2";
$stmt = $connect->prepare( $query );
$stmt->bindParam(2, $_GET['id']);
$stmt->execute();
$num = $stmt->rowCount();
if( $num ){
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    header("Content-type: image/png");
    print $row['data'];
    exit;
}else{
}

这是第二张图片(source2.php):

$query = "select * from images WHERE id = 1";
$stmt = $connect->prepare( $query );
$stmt->bindParam(1, $_GET['id']);
$stmt->execute();
$num = $stmt->rowCount();
if( $num ){
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    header("Content-type: image/png");
    print $row['data'];
    exit;
}else{
}

这些是数据库:

TABLE IMAGES
========================================
id | name          | data
========================================
1  | sample image  |[BLOB - 31,9 KiB]
2  | sample image2 |[BLOB - 370,8 KiB]

TABLE DT_TB
========================================
id | dt          | dt2
========================================
1  | 2004-10-26  | 2005-01-25

TABLE DT_TB10
========================================
id | dt          | dt2
========================================
1  | 2006-01-01  | 2007-01-25

这是结果:https://gyazo.com/e3263b030bd2a367e86d39db262551ba

所以我的问题基本上是 它不会显示数据库中的图像并且 第二个“预订”将显示错误,并且与第一个“预订”的数据不同。

如果有人能帮我解决这个问题,我将不胜感激。

提前致谢。

【问题讨论】:

  • 我是一年级学生,所以请善待我的编码技能 :)
  • 你是如何存储你的照片的?为什么不存储网址图片。看看 stackoverflow.com/questions/20556773/… 获取 blob 库存
  • 图片查询不应该是$query = "select * from images WHERE id = ?";,而不是硬编码的1吗?如果它以您的方式工作,我会感到惊讶。使用浏览器查看图像,然后查看源代码并将错误处理添加到图像代码中。
  • 您已经将图像的来源设置为“source.php?id=2” 将图像保存为 URL 而不是 blob,因为这是图像标签上的 src 属性所期望的得到。

标签: php html mysql sql database


【解决方案1】:

大家可以以此为例,但我已经解决了我的问题 :)。

你永远不会在中途关闭你的 $connection。

$connect->close();

使用了 2 次,但仅在您真正想要关闭与数据库的连接时使用。

至于图片,@Rick Calder 对此有很好的解释。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2019-11-26
    • 2020-10-06
    • 1970-01-01
    相关资源
    最近更新 更多