如何在 PHP 中查询数据库并根据匹配的用户输入返回结果



我正在尝试用MySQLi编写一个PHP脚本来查询数据库。

如果可以根据数据库检查用户输入,然后如果输入中表"normal_verbs"的"根"列中的字符串在输入中,我希望可以从"共轭"列返回结果。

因此,如果用户输入类似于"foobar",

并且根列具有"foo",我希望它在"foobar"中看到"foo"并在该行中返回"共轭"的值。

似乎无法让查询像我想要的那样工作。我在下面使用的那个基本上只是一个占位符。我不完全明白为什么它不起作用。

我正在尝试的是:

        function db_connect() {
            static $connection;
            if(!isset($connection)) {
                $connection = mysqli_connect('localhost','user','password','Verb_Bank');
            }
            if($connection === false) {
                return mysqli_connect_error(); 
            }
            return $connection;
        }
        function db_query($query) {
            $connection = db_connect();
            $result = mysqli_query($connection,$query);
            return $result;
        } 
        function db_quote($value) {
                $connection = db_connect();
                return "'" . mysqli_real_escape_string($connection,$value) . "'";
            }    
$m= db_query("SELECT `conjugation` from normal_verbs where `root` in (" . $y . ")");
    if($m === false) {
        // Handle failure - log the error, notify administrator, etc.
    } else {
        // Fetch all the rows in an array
        $rows = array();
        while ($row = mysqli_fetch_assoc($m)) {
            $rows[] = $row;
        }
    }
    print_r ($rows);

没有给我任何错误,所以我认为它正在连接到数据库。

编辑2:我错了。由于误解MySQLi,我错过了一些明显的东西,并相应地编辑了代码。所以上面的代码确实有效,因为它连接到数据库并返回一个结果,但我仍然被一个可行的 SQL 语句难倒在地,可以做我希望它做的事情。

请尝试以下操作:

SELECT 'conjugation' FROM 'normal_verbs' WHERE " . $y . " LIKE CONCAT('%',root,'%')

它选择根包含$y的所有行。

此外,您的代码容易受到 SQL 注入的影响。请在此处查看更多信息。

像这样尝试这个 SQL 查询

SELECT `conjugation` from normal_verbs where `root` like '%$y%'

相关内容

  • 没有找到相关文章

最新更新