我从mysql_ *传递到面向对象的mysqli时遇到了一些问题。

我的index.php文件的结构类似于包括两个文件:

include('connect.php');

include('function.php');

connect.php文件包含:

$mysqli = new mysqli("localhost","root","test","test");

if (mysqli_connect_errno($mysqli)) {

printf("Connection failed: %s

", mysqli_connect_error());

exit();

}

?>

在function.php文件中,有一个名为showPage的函数,该函数不带任何参数,但使用$ mysqli连接,例如...

$result = $mysqli -> query("SELECT * FROM $table ORDER BY ID DESC"); // Seleziono tutto il contenuto della tabella

我无法管理它而无法将$ mysqli变量传递给函数,但是当我使用mysql_ *不推荐使用的函数时,这不是必需的!

我能理解为什么吗,什么是解决此问题的最佳方法?

@Wired删除密码后,然后可能仍然使用它

如前所述,它是一个旧数据库(也在本地),我正在对其进行测试。 但是我还是不希望我的数据写在网上= P还是让我感到困扰

用户定义的函数在PHP中具有自己的变量范围。您需要将$mysqli作为参数传递给该函数,或者使用global $mysqli启动该函数。

在"变量作用域"页面上,给出了确切的问题作为示例:

However, within user-defined functions a local function scope is

introduced. Any variable used inside a function is by default

limited to the local function scope. For example, this script will not

produce any output because the echo statement refers to a local

version of the $a variable, and it has not been assigned a value

within this scope. You may notice that this is a little bit different

from the C language in that global variables in C are automatically

available to functions unless specifically overridden by a local

definition. This can cause some problems in that people may

inadvertently change a global variable. In PHP global variables must

be declared global inside a function if they are going to be used in

that function.

$a = 1; /* global scope */

function test()

{

echo $a; /* reference to local scope variable */

}

test();

?>

全局变量是邪恶的xD,但是您的答案是最好的。 我习惯了C,这就是为什么我无法做到这一点。 我更喜欢每次都将变量作为参数传递。 谢谢。

在这种情况下,全局变量是完全有效且可理解的设计模式。 毕竟,数据库连接对象是应用程序中的全局对象。 但是,我会将您的mysqli对象包装在您自己的用户创建的对象中,并在全局范围内使用此对象,因为这将使您能够灵活地根据需要进行改进/升级,而不必对应用程序进行大量更改。

您还可以使用连接池,值得一试。

$mysqli = new mysqli('p:localhost', 'username', 'password', 'db_name');

cannot manage it to work without passing to the function the $mysqli variable, but this was not necessary when I used mysql_* deprecated functions!

那是不正确的。即使在旧的mysql_*函数中,如果您需要指定与哪个数据库连接有关,实际上也必须传递链接标识符,例如:

$result = mysql_query($sql, $link);

此示例还显示了,您也必须传递$result。如果确实遗漏了$link参数:

$result = mysql_query($sql);

mysql扩展确实在内部寻找上次使用的连接。如果没有找到,它将使用php.ini中设置的参数创建一个新的。这只是为了您提供信息,以便更好地了解过去的原因和工作方式。

经过更好的搜索后,我找到了答案,它适用于可能需要它的任何人:

PHP更改为mysqli。 mysqli_connection是否不是全局的?

这就是我需要的答案。无论如何,感谢所有帮助我的人

php5的mysqli函数第二个参数,关于php:我应该将$ mysqli变量传递给每个函数吗?相关推荐

  1. OPenCV imread()函数第二个参数详解

    在OpenCV官方文档中imread()函数的原型如下: Mat imread(const string& filename, int flags = 1); 第一个参数filename是我们 ...

  2. python中def之间变量传递_Python def函数的定义、使用及参数传递实现代码

    Python编程中对于某些需要重复调用的程序,可以使用函数进行定义,基本形式为: def 函数名(参数1, 参数2, --, 参数N): 执行语句函数名为调用的表示名,参数则是传入的参数,可以更具需要 ...

  3. 实例说明listen()函数第二个参数的意义与用法

    我们先来看结果: Client: [cpp] view plain copy #include <sys/socket.h> #include <stdio.h> #inclu ...

  4. python+opencv中imread函数第二个参数的含义

    = 0: 灰度图 0:三通道彩色图 <0:原图,带alpha通道

  5. C语言 函数缺省参数 - C语言零基础入门教程

    目录 一.函数简介 1.函数声明 2.函数定义 3.函数调用 4.函数形参和实参 二.函数缺省参数 1.函数全缺省参数 2.函数半缺省参数 三.注意事项 四.猜你喜欢 零基础 C/C++ 学习路线推荐 ...

  6. PHP中CURL方法curl_setopt()函数的一些参数

    2019独角兽企业重金招聘Python工程师标准>>> bool curl_setopt (int ch, string option, mixed value) curl_seto ...

  7. python函数参数定义顺序_18 Python - 函数定义与参数

    12 函数定义与参数 01函数 (1)定义: def 函数名(参数1,参数2--): 函数体 return 结果 (2)调用: 函数名(实际参数) (3)函数作用: 最大化代码重用, 最小化代码冗余, ...

  8. wlansetprofile 倒数第二个参数_西部世界 | 脚本参数的演变

    作者:Todd Weller Cross I.T. 高级数据系统架构师 Todd Weller 是位于美国宾夕法尼亚州格林维尔的 FileMaker 商业联盟白金合作伙伴 Cross I.T. 的高级 ...

  9. Python基础教程:函数的可变参数

    在Python函数中,还可以定义可变参数. 如:给定一组数字a,b,c--,请计算a2 + b2 + c2 + --. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把 ...

最新文章

  1. java随机数 时间_Java 随机数
  2. NR 5G 用户平面协议
  3. Perl中的单行凝视和多行凝视
  4. 人工智能---机器学习
  5. C#文件和文件文件夹按时间、名称排序-顺序与倒序
  6. chown -R命令的使用
  7. 深入理解 ValueTask
  8. ------webkitformboundary
  9. db2数据库服务器时间怎么修改,DB2数据库中,肿么修改数据的创建时间,求SQL语句。...
  10. Ubuntu 手动更新firefox的flash插件
  11. python 利用matploylib画动态雷达实时显示图
  12. 干货 | Elasticsearch 8.X 版本升级指南
  13. EduCoder-Hive表DDL操作(一、二)答案-路漫漫远俢兮
  14. 消消乐android 源代码,【消消乐】源代码
  15. 如何登录设备(睿易篇)
  16. java生成随机邮箱_Java随机生成姓名、邮箱、手机号码
  17. 我谈阶梯博弈(Staircase Nim)
  18. 国内首场新GRE考试常见问题解答及首考回忆
  19. vue脚手架引入bootstrap3
  20. 文献计量学-使用HistCite执行引文分析 (Citation Analysis)

热门文章

  1. PIE SDK影像坏线修复
  2. 软件缺陷的优先级和严重性定义
  3. Activiti入门文档
  4. Android蓝牙串口通讯【转】
  5. Docker使用阿里云docker镜像加速
  6. 今天改bug遇到一个ie8样式错乱问题
  7. IOS UIView 放大缩小
  8. DundasWebChart 5.5 破解续.
  9. win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
  10. LSMW批处理使用方法(03)_步骤2