通过PHP引用传递数据库连接
发布时间:2020-12-13 16:38:02 所属栏目:PHP教程 来源:网络整理
导读:问题是数据库连接是否应该通过引用或值传递? 对我来说,我特别质疑一个PHP到MySQL的连接,但我认为它适用于所有的数据库. 我听说在PHP中将变量传递给函数或对象时,它被复制到内存中,因此立即使用两倍的内存.我也听说,只有对值进行了更改才被复制(例如从数组中
问题是数据库连接是否应该通过引用或值传递?
对我来说,我特别质疑一个PHP到MySQL的连接,但我认为它适用于所有的数据库. 我听说在PHP中将变量传递给函数或对象时,它被复制到内存中,因此立即使用两倍的内存.我也听说,只有对值进行了更改才被复制(例如从数组中添加/删除的键). 在数据库连接中,我会认为在函数中正在改变,因为查询可以改变最后一个插入的id或num行的内容. (我想这是另一个问题:像连接中存储的num行和insert id这样的东西,还是将实际的调用返回到数据库?) 那么,如果连接通过引用或值来传递,内存或速度是否重要? PHP 4 vs 5有差异吗? // $connection is resource function DoSomething1(&$connection) { ... } function DoSomething2($connection) { ... }
PHP资源是一种已经是引用的特殊类型.通过值或通过引用明确地传递它将不会有所不同(即它仍然是参考).您可以在PHP4下自行检查:
function get_connection() { $test = mysql_connect('localhost','user','password'); mysql_select_db('db'); return $test; } $conn1 = get_connection(); $conn2 = get_connection(); // "copied" resource under PHP4 $query = "INSERT INTO test_table (id,field) VALUES ('','test')"; mysql_query($query,$conn1); print mysql_insert_id($conn1)."<br />"; // prints 1 mysql_query($query,$conn2); print mysql_insert_id($conn2)."<br />"; // prints 2 print mysql_insert_id($conn1); // prints 2,would print 1 if this was not a reference (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |