将MySQL链接传递给类方法

时间:2009-07-25 08:24:23

标签: php mysql database oop class

这是我的问题,我有一个带有ave方法的类,我想传递一个Mysql DB链接到它,所以我从类创建一个新对象,并调用saveProperty方法,并在我的主文件中创建了一个MySQL连接,并将链接保存在一个名为$ db的var中,所以当我调用该方法时,它会链接到:saveProperty($ db)。

但是保存数据我得到一个错误:

警告:mysql_select_db():提供的参数不是第75行的C:\ wamp \ www \ aqaria \ classes \ property.php中的有效MySQL-Link资源

警告:mysql_query():提供的参数不是第99行的C:\ wamp \ www \ aqaria \ classes \ property.php中的有效MySQL-Link资源

这意味着我没有通过链接吗?但是如何?

这是我的一些代码:

<?php

  class test 
  {




    function saveProperty($db)
    {

        $sql = "<<query goes here>>" 

        mysql_query($sql,$db);

        if(mysql_affected_rows()>0)
        echo "<h3>Data was saved</h3>";
        else
        echo "<h3>Error saving data</h3>";

    }


  }

这是调用代码:

$db = mysql_connect('localhost','root',''); 
mysql_select_db("aqaria",$db); 
$property = new Property(); 
$property->saveProperty($db);

虽然如果我将gloabl关键字添加到类的方法中它会工作,我想知道我是否可以通过数据库连接的链接?

4 个答案:

答案 0 :(得分:1)

毫无疑问,可以在方法中传递db_links。

  

警告:mysql_select_db():提供   参数不是有效的MySQL-Link   资源   C:\ WAMP \ WWW \ aqaria \类\ property.php   第75行

使用mysql_error()

检查数据库凭据和输出

答案 1 :(得分:0)

您的函数中没有数据库对象。

在顶部添加:

global $db;

编辑:要将其传递到您的功能中,您需要执行此操作:

$db = mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db("aqaria", $db) or die(mysql_error());

agar_add_offer($someDataFromSomewhere, $db);

function aqar_add_offer($data, $db)
{
    $property = new Property();

    //do some data manipulation

    $property->saveProperty($db);
} 

答案 2 :(得分:0)

您是否尝试过参考?

此外,您可能希望在mysql_affected_rows()

中使用$ db
function saveProperty(&$db)
{

    $sql = "<<query goes here>>" 

    mysql_query($sql,$db);

    if(mysql_affected_rows($db)>0)
    echo "<h3>Data was saved</h3>";
    else
    echo "<h3>Error saving data</h3>";

}

答案 3 :(得分:0)

我只是在每个类的方法中使用全局$ db我需要使用mysql。 $ db是在课外定义的。

是否有一种方法我不必在每种方法中使用'global $ db'。