我创建了这两个文件:
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
函数收到“错误”消息。如果我阻止对$db2
对象的所有调用,则$db1
对象可以正常工作。
我以为我可以使用$this->dbConnection
来解决问题,但这似乎不起作用。
答案 0 :(得分:1)
你想要这样的东西:
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;
}
}
答案 1 :(得分:0)
您的$ this-> dbConnection未在您的班级中定义。
class myDbClass {
private $dbConnection
....
}
答案 2 :(得分:0)
您需要第4个“new_link”参数(php mysql_connect):
“如果使用相同的参数对mysql_connect()进行第二次调用,则不会建立新的链接,而是返回已打开的链接的链接标识符.new_link参数修改此行为并使mysql_connect成为可能()总是打开一个新的链接,即使之前使用相同的参数调用了mysql_connect()。“