从 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 在语句只执行一次时必须做的工作量(它必须处理两个请求 - 准备,执行,- - 而不是一个 - 执行,加上额外的工作来在连接被破坏时清理缓存的语句)。
我正在编辑我找到的有关内联编辑的教程。它使用 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 在语句只执行一次时必须做的工作量(它必须处理两个请求 - 准备,执行,- - 而不是一个 - 执行,加上额外的工作来在连接被破坏时清理缓存的语句)。