首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PhP使用SQL搜索工具

使用PhP使用SQL搜索工具
EN

Stack Overflow用户
提问于 2015-11-20 10:33:19
回答 2查看 92关注 0票数 0

我正在尝试创建一个搜索工具,在两个不同的表中搜索两个不同的列,因此,如果酒店表中的名称匹配或来宾表中的guest_id匹配,则输出while循环中的任何内容。然而,其中一项工作是:

代码语言:javascript
复制
$stmt = $conn->prepare("SELECT * FROM hotel
                   INNER JOIN booking
                    ON hotel.hotel_id=booking.hotel_id
                    INNER JOIN guest
                    ON guest.guest_id=booking.guest_id
                    WHERE name LIKE :search_term");

但是这个不起作用它给了我一个空的结果

代码语言:javascript
复制
    $stmt = $conn->prepare("SELECT * FROM guest
                       INNER JOIN booking
                       ON guest.guest_id=booking.guest_id
                       INNER JOIN hotel
                       On booking.hotel_id=hotel.hotel_id
                       WHERE guest_id LIKE :search_term");
$stmt->bindValue(':search_term','%'.$search_term. '%');

我的完整代码是:

代码语言:javascript
复制
    <!DOCTYPE html>
<html>
<head>
    <title>Database</title>
<link href="style.css" rel="stylesheet" type="text/css"> <!-- This is linking style sheet (css)into this HTML page-->
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400italic' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="navigation">
    <form action = "index.php" method="get">
        <input type = "submit" name = "mainpage" value = "Main Page" class = "submitbut" id = "but1" />
    </form>
</div>
<form action="index.php" method="post">
    <input type = "text" name = "search" id = "searching" />
    <input type = "submit" name = "data_submit" value = "Search" id = "scan" />
</form>
<?php
if(isset($_GET['mainpage'])){
    header("Location:mainpage.php");
exit;
}
if (isset($_POST["data_submit"])){
$search_term = $_POST['search'];
$conn = new PDO(
    'mysql:host=localhost;dbname=u1358595', 
    'root'
    );
$stmt = $conn->prepare("SELECT * FROM hotel
                       INNER JOIN booking
                        ON hotel.hotel_id=booking.hotel_id
                        INNER JOIN guest
                        ON guest.guest_id=booking.guest_id
                        WHERE name LIKE :search_term");
$stmt->bindValue(':search_term','%'.$search_term. '%');
$stmt->execute();
echo
"<table><tr>  
<th>Results</th>
</tr>";
while($hotel = $stmt->fetch())
{
    echo
"<tr>"."<td>"."<a href='details.php?name=".$hotel['name']."'>".$hotel['name']."</a>"."</td>"."</tr>";
    }
echo "</table>";

$stmt = $conn->prepare("SELECT * FROM guest
                       INNER JOIN booking
                       ON guest.guest_id=booking.guest_id
                       INNER JOIN hotel
                       On booking.hotel_id=hotel.hotel_id
                       WHERE guest_id LIKE :search_term");
$stmt->bindValue(':search_term','%'.$search_term. '%');
$stmt->execute();
echo
"<table><tr>  
<th>Results</th>
</tr>";
while($hotel = $stmt->fetch())
{
    echo
"<tr>"."<td>"."<a href='details.php?name=".$hotel['first_name']."'>".$hotel['last_name']."</a>"."</td>"."</tr>";
    }
echo "</table>";
$conn = NULL;
}
?>
</body>
</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-20 11:04:55

你对WHERE条款有异议。您没有定义从哪个表列比较guest_id。我认为guest_id应该被guest.guest_id取代。

代码语言:javascript
复制
 $stmt = $conn->prepare("SELECT * FROM guest
                       INNER JOIN booking
                       ON guest.guest_id=booking.guest_id
                       INNER JOIN hotel
                       On booking.hotel_id=hotel.hotel_id
                       WHERE guest.guest_id LIKE :search_term");
$stmt->bindValue(':search_term','%'.$search_term. '%');

编辑:

此外,可以将搜索部分替换为:

代码语言:javascript
复制
... '...WHERE guest.guest_id LIKE "%":search_term"%"');
    $stmt->bindValue(':search_term', $search_term);

但是,您需要在查询中使用单引号。

票数 2
EN

Stack Overflow用户

发布于 2015-11-20 11:01:51

考虑使用对:文档的匹配

代码语言:javascript
复制
SELECT * FROM hotel
    INNER JOIN booking
      ON hotel.hotel_id=booking.hotel_id
    INNER JOIN guest
       ON guest.guest_id=booking.guest_id
WHERE MATCH (col1, col2)
    AGAINST ('+keyword1' IN BOOLEAN MODE);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33824422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档