-1

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

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

<?php

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

4 回答 4

1

我不完全理解,但是或者将此参数放在配置文件中,您执行此配置文件

$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);
}
于 2012-08-30T06:09:28.130 回答
1

使用 ph 连接到 mysql 数据库非常简单。你写的代码没问题,虽然最好使用 MySQLi 或 PDO 而不是 MySQL 函数,因为它们可能有一些 sql 注入或其他安全问题。给你的文件起一个像config.php这样的名字,并在你想使用mysql连接的时候添加它。使用 require_once 或包含 php 的函数来使用它。

希望它会有所帮助..

于 2012-08-30T06:40:31.793 回答
0

从 PHP 的通知来看,他们至少在 PHP 5.5/6.0 之前不会正式弃用 mysql_* 扩展,因此您有时间在这些函数完全消失或 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');
?>

希望能帮助到你。

于 2012-08-30T06:15:19.187 回答
-1

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

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

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

}

或者您可以创建另一个定义连接的类,然后您可以根据需要扩展该类(继承)

于 2012-08-30T06:04:17.763 回答