【问题标题】:Pass SQL database connection to PHP function将 SQL 数据库连接传递给 PHP 函数
【发布时间】:2015-12-15 12:31:04
【问题描述】:

我正在从第二个 PHP 文件调用一个函数,并且我想避免再次创建数据库连接。我正在使用此代码,但它不起作用。

$Db = mysqli_init();
$Db->options(MYSQLI_OPT_LOCAL_INFILE, true);
$Db->real_connect($servername, $username, $password, $dbname, 3306);
$connection = $Db->real_connect($servername, $username, $password, $dbname, 3306);

CheckTableMetrics($connection, $dbname, $table1, $table2, $metric1, $metric2, $date1, $date2, $start_date, $end_date);

我突然发现错误。如果我将代码的第一部分放在包含该函数的 PHP 文件中,那么一切正常。

我得到的错误:

mysqli::query(): 无效的对象或资源 mysqli

在非对象上调用成员函数 fetch_assoc()

如果我只是把代码工作正常:

$Db = mysqli_init();
$Db->options(MYSQLI_OPT_LOCAL_INFILE, true);
$Db->real_connect($servername, $username, $password, $dbname, 3306);

最好的方法是什么?

【问题讨论】:

  • 不起作用..我喜欢这样的问题..我们怎么能神奇地知道为什么它不起作用?打开您的错误报告并尝试调试您的代码?!
  • 什么是it does not work
  • 您可以为 dbConnection 创建一个单例对象。另请查看此文档 -> stackoverflow.com/a/11369679/767329
  • 请同时显示函数CheckTableMetrics

标签: php sql function reference connection


【解决方案1】:

你的问题很简单:

$connection = $Db->real_connect($servername, $username, $password, $dbname, 3306);

这是错误的。 real_connect() 返回一个布尔标记成功或失败,而不是连接的数据库对象。相反,您应该将$Db 发送到您的函数中,这样就可以了。

【讨论】:

  • 很好发现 - 完全错过了
  • 太棒了。就是这么简单!
  • 简单的问题往往是最难发现的:)
猜你喜欢
  • 2012-08-02
  • 2021-03-03
  • 1970-01-01
  • 2011-03-15
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多