在类中调用数据库连接

时间:2011-11-01 06:32:45

标签: php mysql database

我的mysql连接有问题。我需要访问类中的连接。我该怎么做?即使我尝试在类中包含连接文件或连接变量$ con0,它也没有值,所以我收到错误。

Connection.php

<?php
$username = " ";
$password = "";
$hostname = " ";    
$con = mysql_connect()
?>

model.php

<?php

include(connection.php);
class model{

function needTheConnection($uid){
$q = "SELECT x from  DB.table WHERE id = '" . $uid . "'";
$res  = mysql_query($q);
}

}
?>

这给了我“mysql_query():提供的参数不是一个有效的MySQL-Link资源”。

有什么问题?

谢谢, tinks

2 个答案:

答案 0 :(得分:4)

您遗漏了部分代码。我们根据错误消息知道这一点。这一行:

$res  = mysql_query($q);

在您的代码中可能实际上看起来像这样:

$res  = mysql_query($q, $con);

我是对的吗?如果是这种情况,则问题是无法从该函数或类实例中访问$con。在您的情况下解决这个问题的简单方法是简单地删除它。 MySQL客户端将自动使用您脚本中的最后一个连接。

但实际上,您应该考虑不同的设计模式。为了它的价值,我经常只将我的数据库资源粘贴在$GLOBALS['db']中。这不是一种纯粹的OOP方式,但对于许多应用来说,它是合适的。

最后,$ 5表示你对SQL注入很开放。了解如何使用PDO进行准备好的查询,或至少在有人窃取您的整个数据库并将havok带到您的网站之前逃避您的数据。

答案 1 :(得分:1)

class model { 
  function __construct(&$db) {
    $this->db=$db;
  }
  function needTheConnection($uid){ 
    $q = "SELECT x from DB.table"; 
    $res  = mysql_query($q,$this->db); 
  } 
}

$model = new model($conn);