php - 使用 PHP 进行 MySQL 搜索

标签 php mysql database search

我正在为 MySQL 搜索编写代码,但它不起作用

我使用 PHP 类,这是代码:

data_model.php

<?php
$data = new Data();
if(isset($_GET['q'])) {
    $data->$_GET['q']();
}
class Data {

    function __construct(){
        if(!isset($_SESSION['id'])){
            header('location:../../');   
        }
    }


    function getSubject($search){
        global $con;
        $q = "select * from subject where code like '%$search%' or title like '%$search%' order by code asc";
        $r = mysqli_query($con, $q);
        return $r;
    }]

subject.php

<?php
include "data/data_model.php";

$search = isset($_POST["search"]); 
$subject = $data->getSubject($search);
?>

<form action="subject.php" method="post">
   <label>
       <input type="text" class="form-control" name="search" placeholder="Search Subject..." >
   </label>
   <button type="submit" name="search" class="btn btn-success" value="search"><i class="fa fa-search"></i> Search</button>
</form>

我的代码有什么问题吗?我还使用 getSubject 从 db 表获取数据到我的 html 表,它没有问题,但在搜索时它不起作用?

有人可以帮助我吗?提前致谢。

最佳答案

不应该是这样吗?

$data = new Data();
if(isset($_GET['q'])) {
    $data->getSubject($_GET['q']);
}

另外,这个:

<?php
include "data/data_model.php";

$search = isset($_POST["search"]); 
$subject = $data->getSubject($search);
?>

不会按预期工作,因为 isset() 返回 TRUE/FALSE,具体取决于 $_POST 中是否有“搜索”。这是有效的:

    <?php
        include "data/data_model.php";


        $search = isset($_POST["search"]) ? $_POST["search"]:  '';
        $subject = $data->getSubject($search);
        ?>

关于php - 使用 PHP 进行 MySQL 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56911250/

相关文章:

database - 在 application.conf 中为 Play 2.0/anorm 加密数据库密码

php - MySQL:如果另一个表包含某个值,则在对字段求和时忽略行

php - 如何使用 php 加载 txt 文件并循环内容以查询数据库

mysql - 是否可以像这样创建一个涉及来自两个表的行的查询?

MySQL 与 file_manage 表多列连接

database - 关于数据库,我需要了解什么?

Php PDO Mysql插入错误1064

php - MySQL - 从表中选择唯一值

php - php 和 ajax 搜索功能遇到问题

database - 在数据库中存储地理坐标数据的最佳方式是什么