2012-08-30 30 views
-1

我写了一个连接到MySql DB的php类,然后执行INSERT。我已经完成了这个工作,并且工作。现在,我想将代码的连接部分添加到配置文件,我可以从这里调用它。将MySql连接添加到配置文件

我怎么能在PHP中做到这一点?

<?php 

mysql_connect("localhost", "user", "xxxxx") ; 
mysql_select_db("mydb"); 
... 
...// Insert to DB (which works) 
?> 
+0

你有什么试过的?新代码也不应该使用你应该学习和使用PDO或mysqli的mysql_ *函数。 –

+0

你的意思是像include,include_once,require或require_once之类的东西吗? – Tynarus

+0

@Tynarus我的意思是,将连接字符串添加到1个文件中,然后从其他PHP文件中访问它。 (类似于配置文件) – Illep

回答

-1

您可以编写连接编码在类的构造函数,如:

function __construct($host,$user,$password,$dbname){ 

    mysql_connect($host,$user,$password) ; 
    mysql_select_db($dbname); 

} 

或者你也可以创造一个连接定义另一个类,然后你可以扩展类根据自己的需要(继承)

1

我不完全理解,但POR把这个参数在配置文件中这样做 配置文件

$config['hostname'] = 'yourserver'; 
$config['user'] = 'youruser'; 
$config['password'] = 'password'; 

,然后调用这个在你的类连接

mysql_connect($config['hostname'],$config['user'],$config['password']); 

或越容易构建与conexion的参数的构造,并且看起来这

function __construct($host,$user,$password,$database){ 
    mysql_connect($host,$user,$password) ; 
    mysql_select_db($database); 
} 
+0

+1了很好的答案。但是,Y不鼓励在MySQL_ *上使用MySQLi? – Karma

+1

或PDO,就此而言。 – Tynarus

+0

在mysql中conect的方式是相同的mysqli_connect – jvinces

0

由于从PHP他们不会通知正式弃用mysql_ *扩展,直到至少PHP 5.5/6.0,所以你有一些时间来重写你的脚本之前,这些函数完全消失或E_DEPRECATED错误开始出现。 http://news.php.net/php.internals/53799

因此,使用PDO或mysqli的新脚本:

连接与PDO

<?php 
try{ 
    $con = new PDO('mysql:host=127.0.0.1;dbname=test','root','password'); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); 
}catch (Exception $e){ 
    die('Cannot connect to database. Details:'.$e->getMessage()); 
} 
?> 

现在,如果上面的代码是在您的配置文件,那么你可以使用include('config.php'),然后 $con将包含您的连接对象。

由于$con不是全局范围,您需要通过构造将它传递给您的类。

<?php 
include('config.php'); 
class yourclass{ 

    function __construct(PDO $con){ 
     $this->db = $con; 
    } 

    function someMethod($valueA,$valueB){ 
     $sql = "INSERT 
       INTO TABLE 
         (
           colA, 
           colB 
         )VALUES(
           :colA, 
           :colB 
         )"; 
     $query = $this->db->prepare($sql); 

     $query->bindParam(":colA", $valueA); 
     $query->bindParam(":colB", $valueB); 
     $query->execute(); 
    } 
} 
$aClass = new yourclass($con); 
$aClass->someMethod('someValueforA','someValueforB'); 
?> 

希望它有帮助。

1

通过使用ph连接到mysql数据库非常简单。尽管使用MySQLi或PDO而不是MySQL函数更好,因为它们可能有一些SQL注入或其他安全问题。 给你的文件一个像config.php这样的名字,并把它添加到你想使用mysql连接的时候。 使用require_once或者包含php的函数来使用这个。

希望能帮到..

+0

所以我必须在我的代码中的任何地方用'mysqli'替换'mysql_'? – Illep

+0

是的。你必须这样做,但不是必须的,这只是因为标准程序员被建议不要使用mysql函数。这只是出于安全原因,尽管它工作正常。 – Gaurav

+0

也可以在配置文件中使用if else条件。你可以在里面设置你正在使用的服务器。如果你在本地主机上工作,那么你可以建立一个连接,否则,如果你在一个活着的服务器上,然后再建立一个连接。那么你的一个配置文件在两个工作站上都​​能正常工作,而且你不需要编辑它。 如果您发现我有帮助,请投我:) – Gaurav

相关问题