微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

如果可以针对数据库检查用户输入,并且如果表’normal_verbs’的列’root’中的字符串在输入中,则返回来自列’conjugation’的结果,我希望它.

因此,如果用户输入类似于“foobar”,并且根列具有“foo”,我希望在’foobar’中看到’foo’并在该行中返回’conjugation’的值.

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

我正在尝试的是这样的:

        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,'%')

它选择root包含$y的所有行.

此外,您的代码很容易受到sql注入的攻击.请查看here获取更多信息.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐