我有两个查询一个工程一个不使用php和mysql?

h6my8fg2  于 2023-02-07  发布在  PHP
关注(0)|答案(2)|浏览(103)

我正在创建一个电影数据库,我有一个查询,查找电影的ID和它的工作。

public function getMovieById($id) {
        $query = "SELECT * FROM movies WHERE id = ?";
        $paramType = "i";
        $paramValue = array(
            $id
        );
        
        $result = $this->db_handle->runQuery($query, $paramType, $paramValue);
        return $result;
    }

然后我试着做一个查询,按标题搜索电影。所以如果我输入say“Alien”,它会返回我拥有的任何电影,标题中有“Alien”这个词。无论我试过什么,我都没有得到任何返回,也没有错误。

public function getMovieByTitle ($title) {
        $query = "SELECT * FROM movies WHERE title LIKE ?";
        $paramType = "s";
        $paramValue = array(
            $title
        );

        $result = $this->db_handle->runQuery($query, $paramType, $paramValue);
        return $result;
    }

任何指向正确方向的观点都将受到赞赏
我还尝试了一个函数来查看title是否由$_POST传递,结果显示是这样。

mcvgt66p

mcvgt66p1#

'Alien'之类的值传递给LIKE运算符不会执行预期的操作。
这个 predicate ...

WHERE title LIKE 'Alien'

...实际行为类似于:

WHERE title = 'Alien'

如果要搜索包含给定字符串的标题,则需要使用通配符'%'

WHERE title LIKE '%Alien%'

您可以在代码中连接百分号,然后将其注入查询,也可以将原始值传递给查询,然后在SQL中添加通配符:

WHERE title LIKE CONCAT('%', ?, '%')
guicsvcw

guicsvcw2#

%合并到php代码中,作为sql中的一些字符的占位符

public function getMovieByTitle ($title) {
        $query = "SELECT * FROM movies WHERE title LIKE ?";
        $paramType = "s";
        $paramValue = array(
          "%".  $title . "%"
        );

        $result = $this->db_handle->runQuery($query, $paramType, $paramValue);
        return $result;
    }

相关问题