如何使用 PDO 和 Prepared Statements 通过 PHP 函数调用返回 MySQL 记录?

时间:2021-08-01 13:21:16

标签: php mysql fetch

我试图找到使用准备好的语句和 PDO 通过 PHP 函数调用从 MySQL 表中获取记录的最佳方法?

效率不是问题(我确信可能有更快的方法或更高效的内存方法来完成此任务)。我的目标是使代码简单,只需调用一个函数即可通过 PHP 函数调用和 using PDO 准备语句获取记录。

到目前为止的调用者看起来像这样:

$records = DB_Get_Records($pdo_connection, '"SELECT * FROM Table1 WHERE ID = ?', array($record_id);`

函数看起来像这样:

function DB_Get_Records(&$pdo_connection, &$sql_statement, &$records_located, &$select_string, &$param_array) {
    $sql_statement = $pdo_connection->prepare($select_string);
    $sql_statement->execute($param_array);
    $records_located = $sql_statement->fetch(PDO::FETCH_ASSOC);

    return $records_located;

由于参数的范围,我使用的是按引用传递。但我不确定如何在脚本的主要部分最好地定义。如果我用传值,相信函数返回后所有的结果都会丢失。

令人困惑的是如何在函数调用之前定义它们,以便它们接收数据。我不确定在调用函数之前是否必须保留某种空间。使用时

$records_located = $sql_statement->fetch(PDO::FETCH_ASSOC); 

在脚本或函数的主要部分,$records_located 接收记录。 但是我不清楚试图将这些信息从调用者传递到主要信息。在函数中使用时,fetch 语句(我相信)将使用 $records_located 作为指针创建必要的空间。弹出的问题似乎是如何?接收变量是否用于创建数组然后设置指向 $records_located 变量?如果是这样,那么数组的范围很可能仅限于函数调用。如果是这种情况,那么——尽管数据指针被保留——在函数返回后,从 fetch 返回的实际数据将消失。

希望我在这里遗漏了一些东西或对这个问题想得太多了。

同样,这不是试图最大限度地提高内存使用速度。它只是简单地调用一行而不是多行的数据库来设置每个调用以获取记录。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

看起来您需要忘记分配内存以及谁在何处做什么,PHP 主要为您做这件事。如果您将所有参数更改为 NOT 通过引用传递,然后

return (
  <NumberFormat
    {...other}
    value={minAssets}
    getInputRef={inputRef}
    thousandSeparator
    isNumericString
    prefix="$"
  />
);

这只会返回一个结果数组,不涉及范围