繁体   English   中英

如何搜索(在数据库行中)

[英]How can I search (In DB row)

我正在尝试找出如何在数据库行中进行搜索,但我没有IDEA ...也许你们中的有些人可以帮忙。 我正在为老板制作一个收集收藏的网站的魔术。 在这个游戏中,您有多套,每套都有一张纸牌。 这里有一个页面,您可以在其中看到所有集合,并且在此页面中,我希望搜索栏可以找到这些集合。 我想要的是页面顶部的搜索栏,当您键入“ Strong”时,您会看到包含“ Strong”的每个集合名称。

输出: http : //prntscr.com/5ubsa2列表仍然有很多...

正如您在输出中看到的那样,列出了所有集合。 我希望您可以在那里看到搜索结果。

输入:

<body>

<?php
    // Get data
    $query = 'select * from sets ORDER BY releaseDate;';
    $sets = $conn->query($query);

    // Generate HTML
    $htmlSets = '';
    foreach($sets as $row){
        $htmlSets .= '<div class="col-md-4 magic-set"><a href="'.$baseURL.'set.php?id='.$row['id'].'"><h5>'.$row['name'].'</h5></a></div>';
    }
    //set.php?fname=areg&lname=aerga

?>

<!-- Page Content -->
<div class="container">
    <?php include_once 'inc/navigation.php';?>
    <div class="content">
        <div class="row">
            <div class="col-md-12">
                <div class="text-center">
                    <h3>Magic: the Gathering Sets</h3>
                    <hr>
                </div>
            </div>
        </div>

        <div class="row">
            <?= $htmlSets ?>
        </div>
        <!-- /.row -->
    </div>

    <?php include_once 'inc/footer.php';?>

</div>
<!-- /.container -->
</body>

看来您尚未启动MySQL连接,也没有退出它。

<?php

    define("DB_SERVER", "localhost");
    define("DB_USER", "username");
    define("DB_PASS", "password");
    define("DB_NAME", "database_name");

    $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

    // If the connection didn't succeed, run this error:

    if (mysqli_connect_errno()) {
        die("Database connection failed: " .
            mysqli_connect_error() .
            " (" . mysqli_connect_errno() . ")"
        );
    }
?>

此连接应该在文档的开头。 您还必须具有mysqli_close($ connection); 在文档末尾以关闭您的连接。

您在查询末尾还会有一个分号,因此请务必将其删除。 这应该是查询的正确格式:

$query = 'SELECT * FROM sets ORDER BY releaseDate';

您不能对MySQL查询使用foreach循环,而只能使用while循环(除非您为主ID禁用了自动增量)。 这是您的代码在while循环中的样子:

<?php

    // You can also use mysqli_fetch_row()
    while ($row = mysqli_fetch_assoc($sets)) {
        $htmlSets .= '<div class="col-md-4 magic-set"><a href="'.$baseURL.'set.php?id='.$row['id'].'"><h5>'.$row['name'].'</h5></a></div>';
    }

    // Since your query is of a 'read' type and
    // not an 'update', you are required the free the result:

    mysqli_free_result($sets) ;

?>

确保释放您的结果,以防您以后需要再次使用它。

这是一个非常简单的兄弟,实际上您必须检查您的saerch形式是否为get或post,您始终要检查用户是否搜索了任何内容或该内容是否为空,例如,它是get形式,而您在php中的查询参数是“ q”去做这个

$query = "select * from sets ORDER BY releaseDate";
if( if(!empty($_GET['q'])))
{
    $query = "select * from sets WHERE name LIKE '%" .$_GET['q']. "%'    ORDER BY releaseDate";
}

这只是基本概念...

您可以使用一些AJAX来完成此操作。 这是一个样本。 只需替换为您的值和CSS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM