создание класса pdo в php - PullRequest
       5

создание класса pdo в php

0 голосов
/ 17 февраля 2012

Я пытаюсь создать простой объект php для управления базой данных mysql через pdo.Пока что он просто отлично подключается к базе данных, и теперь, когда я пытаюсь вставить новую строку, я получаю следующую ошибку:

Неустранимая ошибка PHP: использование $ this, когда не в контексте объекта в строке 37

строка 37: $ STH = $ this-> DBH-> prepare ($ sql);

Возможно, я просто использую $ this неправильно.любая помощь будет оценена.

<?
class Database {
    private $DBH;


    //connects to the database
    function __construct($host,$dbname,$user,$pass) {    
        try {  
            $this->DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  
        }  
            catch(PDOException $e) {  
            echo $e->getMessage();  
        }
    }

    //inserts into the database
    //$tableName name of the table to insert the info into
    //$items is a multidimensional array of array(column name, value)
    public function insert($tableName,$items){
        $values = array();
        $sql = "INSERT INTO $tableName(";
        $valuePlaceHolder = ''; // holds the question marks at the end of the PDO sql string

        foreach($items as $item){
            $sql .= $item[0] . ',';
            array_push($values, $item[1]);
            $valuePlaceHolder .= '?,';
        }

        // remove the last comma from the sql statement
        $sql = substr($sql,0,-1);
        $valuePlaceHolder  = substr($valuePlaceHolder, 0, -1);

        $sql .= ") values ($valuePlaceHolder)";
        echo $sql;
        $STH = $this->DBH->prepare($sql);
        $STH->execute($values); 
    }

}

?>

1 Ответ

0 голосов
/ 17 февраля 2012

читать это:

http://www.php.net/manual/es/language.oop5.basic.php#88665

Чтобы вы могли решить свою проблему:

....
  // remove the last comma from the sql statement
        $sql = substr($sql,0,-1);
        $valuePlaceHolder  = substr($valuePlaceHolder, 0, -1);

        $sql .= ") values ($valuePlaceHolder)";
        echo $sql;
        $STH = Database::DBH;
        $SHT = $SHT->prepare($sql);
        $STH->execute($values); 
.......
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...