我已经创建了这两个文件:
class myDbClass {
function dbConnect($db) {
$dbhost = 'myhost';
$dbuser = 'myuser';
$dbpass = 'mypassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($db, $conn);
$this->dbConnection = $conn;
}
function dbSelect($sql) {
// run the query
if ($result = mysql_query($sql, $this->dbConnection)) {
echo 'got a result';
} else {
echo 'error';
}
} // end of dbSelect function
} // end of class
和
include "myclass.php";
// create two new objects
$db1 = new mkaDB();
$db2 = new mkaDB();
// First Database Connection
$dbname1 = 'myfirstdatabase';
$db1->dbConnect($dbname1);
// Second Database Connection
$dbname2 = 'myseconddatabase';
$db2->dbConnect($dbname2);
$sql1 = "select * from mytable";
$db1->dbSelect($sql1);
$sql2 = "select * from myothertable";
$db2->dbSelect($sql2);
我试图完成的是创建2个数据库连接,每个连接到不同的模式。然后,我希望能够通过$db1->dbSelect
或$db2->dbSelect
调用每个模式。然而,当我运行这个时,我会从dbSelect
函数中得到"error"消息。如果我屏蔽了对$db2
对象的所有调用,那么$db1
对象确实有效。
我想我可以使用$this->dbConnection
来整理事情,但这似乎不起作用。
你想要这样的东西吗:
class sql
{
private static function _dbConnect()
{
mysql_connect("localhost", "uname", "pwd");
mysql_select_db("db");
}
private static function _dbConnect2()
{
mysql_connect("localhost", "uname", "pwd");
mysql_select_db("db");
}
public static function something($user){
self::_dbConnect
// code in here and mysql
OR
self::_dbConnect2
}
是这样的吗?
示例:
public static function getFriendNumber($username)
{
self::_dbConnect();
$query = mysql_query("SELECT friend_array FROM users WHERE `user_name` = '$username'")or die(mysql_error("Error selecting friend_array with id " . $username));
while($row = mysql_fetch_array($query)){
$friend_delimit = $row['friend_array'];
}
if($friend_delimit != ''){
$explosion = explode(",",$friend_delimit);
$counted = count($explosion);
return $counted;
}
else {
$counted = '0';
return $counted;
}
}
您需要第四个"new_link"参数(php-mysql_connect):
"如果用相同的参数对mysql_connect()进行第二次调用,将不会建立新的链接,而是返回已打开链接的链接标识符。new_link参数修改了这种行为,使mysql_conneck()始终打开一个新链接,即使以前用相同的参数调用过mysql_connec()。"
$this->dbConnection没有在类中定义。
class myDbClass {
private $dbConnection
....
}