从 mysql 更改为 mysqli 标准程序 - 准备好的陈述?

changing from mysql to mysqli standard proceedure - prepared statements?

我正在编辑我找到的有关内联编辑的教程。它使用 mysql 但显然我想使用 mysqli 因为 mysql 已贬值。我已经改变了大部分,但有一部分给我带来了困难。有一个单独的文件被调用以连接到数据库和 运行 查询,因此我将在页面顶部声明的主页我声明

require_once("dbcontroller.php");
$db_handle = new DBController();
$sql = "SELECT * from php_interview_questions";
$faq = $db_handle->runQuery($sql);

dbcontroller.php 的相关部分是:

function runQuery($query) {
        $result = mysqli_query($conn, $query);
        while($row=mysqli_fetch_assoc($result)) {
            $resultset[] = $row;
        }       
        if(!empty($resultset))
            return $resultset;
    }

    function numRows($query) {
        $result  = mysqli_query($conn,$query);
        $rowcount = mysqli_num_rows($result);
        return $rowcount;   
    }

我认为我需要使用准备好的语句是否正确?如果是这样,这将如何处理可能涉及 WHERE 子句中任意数量的列或任意数量的条件的 select 查询?

numRows() 是一个奇怪的函数,因为它运行查询只是为了找出它 return 有多少行。我认为这是一个有问题的做法。如果有必要找出 SELECT 会 return 多少行,那么可以将 SELECT * 更改为 SELECT COUNT(*)。 MySQL 可以针对 MyISAM 表对其进行优化,而且不必将结果集传输到客户端也可以节省开支。

否则不需要使用准备语句,因为准备语句只会增加 DBMS 在语句只执行一次时必须做的工作量(它必须处理两个请求 - 准备,执行,- - 而不是一个 - 执行,加上额外的工作来在连接被破坏时清理缓存的语句)。