社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

用PHP-MYSQL按关键字搜索

Trevor • 5 年前 • 1635 次点击  

我试着不使用for-each,只做了一个简单的like,但这也不起作用。

这就是我们要通过的。

<form id="" class="searchbar" action="searchAppt.php" method="get">
           <input type="text" name="terms" size="40" class = "sbar" required value="Search by keyword" oninput="validity.valid||(value='');"
                       onblur="if (this.value == '') {
                                    this.value = 'Enter keyword';
                                }"
                       onfocus="if (this.value == 'Enter keyword') {
             this.value = '';
         }"/>&nbsp;&nbsp;
                <button type="submit" class = "btn">Search</button>
            </form>

if (filter_has_var(INPUT_GET, "terms")) {
    $terms_str = filter_input(INPUT_GET, 'terms', FILTER_SANITIZE_NUMBER_INT);
} else {
    echo "There were no appointments found.";
    include ('includes/footer.php');
    exit;
//explode the search terms into an array
            $terms = explode(" ", $terms_str);


            $sql = "SELECT * FROM appointments WHERE 1";
            foreach ($terms as $term) {
             $sql .= " AND issue LIKE '%$term%' AND email = '". $_SESSION['email'] ."' 
                ";
            }

            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
                echo "<br /><br /><center><h1>Your Ticket(s)</h1><br />
                <div class='table'>
                <div class='tr'>
                <div class='td'><b>Ticket #</b></div>
                <div class='td'><b>First Name</b></div>
                <div class='td'><b>Last Name</b></div>
                <div class='td'><b>Phone #</b></div>
                <div class='td'><b>Building</b></div>
                <div class='td'><b>Room #</b></div>
                <div class='td'><b>Issue</b></div>
                <div class='td'><b>Appt. Start Time</b></div>
                <div class='td'><b>Appt. End Time</b></div>
                <div class='td'><b>Ticket Details</b></div>
                </div>";
                // output data of each row
                while($row = $result->fetch_assoc()) {
                    echo "<div class='tr'>
                    <div class='td'>".$row["id"]."</div>
                    <div class='td'>".$row["fname"]."</div>
                    <div class='td'>".$row["lname"]."</div>
                    <div class='td'>".$row["phonenum"]."</div>
                    <div class='td'>".$row["building"]."</div>
                    <div class='td'>".$row["room"]."</div>
                    <div class='td'>".$row["issue"]."</div>
                    <div class='td'>".$row["start_time"]."</div>
                    <div class='td'>".$row["end_time"]."</div>
                    <div class='td'><form action='ticketdetails.php' method='post'>
                        <input type='hidden' name='id' value='".$row["id"]."'>
                        <input type='submit' value='Ticket Details'></form>
                    </div>
                    </div>";
                }
                echo "</div>";
            } else {
                echo "<br /> <br />Your search <i>'$terms_str'</i> did not match any appointments";

它会显示每个单独的约会,而不是那些有类似关键字搜索问题的约会。我觉得我只是在用select语句忽略一些东西。任何帮助都将不胜感激。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55582
 
1635 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Nick
Reply   •   1 楼
Nick    6 年前

你的问题在于 filter_input . 您正在指定的筛选器 FILTER_SANITIZE_NUMBER_INT ,但传递一个用空格分隔的单词列表。因此,输出 滤波器输入 +/- 以及输入的数字),因此不会向查询添加任何条件。你可能想用 FILTER_SANITIZE_STRING 相反。