MASNathan Posted June 2, 2012 at 08:43 PM Report #459886 Posted June 2, 2012 at 08:43 PM (edited) Boas Noites... estou para aqui a tentar criar uma class para interagir com o bd, o código que eu tenho é o seguinte: class DB_conn { private $mysql = array(); private $conn; public $errors; function __construct() { define('DATABASE', 'Filipe', true); switch (DATABASE) { case 'Subba': $this->mysql['loc'] = 'localhost'; $this->mysql['db'] = "votebox"; $this->mysql['user'] = "root"; $this->mysql['pass'] = ""; break; case 'Filipe': $this->mysql['loc'] = "localhost"; $this->mysql['db'] = "jitp_db"; $this->mysql['user'] = "root"; $this->mysql['pass'] = ""; default: break; } } //CORE FUNCTIONS private function connect() { $this->conn = mysql_connect($this->mysql['loc'], $this->mysql['user'], $this->mysql['pass']) or die('Connection Errors: ' . mysql_error()); mysql_select_db($this->mysql['db']); } private function close() { mysql_close($this->conn); } private function clean($str) { return mysql_real_escape_string($str); } //MYSQL FUNCTIONS - get/add/update/delete public function getAllVideos() { //OPEN CONNECTION $this->connect(); //GET DATA FROM DATABASE $data = array(); $result = mysql_query(" SELECT V.vid_id id, V.vid_url url, V.vid_vCode vCode, V.vid_thumbnail thumbnail, V.vid_episodeNr episodeNr, C.cat_title cat FROM tb_jitp_videos V INNER JOIN tb_categories C ON V.cat_id = C.cat_id;"); while ($row = mysql_fetch_array($result)) { $data[] = $row; } //CLOSE CONNECTION $this->close(); //RETURN DATA return $data; } public function addVideo($url, $episodeNr, $categorieID) { //OPEN CONNECTION $this->connect(); //VALIDATION OF FIELDS if (!is_numeric($episodeNr)) { //validation of episonde number $this->errors = 'Episode Number not Valid'; return false; } if (!$this->isCategorie($categorieID)) { //validation of Video Categorie $this->errors = 'Categorie not Valid'; return false; } $video = new Youtube($url); if (!$video) { $this->errors = 'Url not Valid'; return false; } $url = $this->clean($url); $vCode = $video->getID(); $thumbnail = $video->getThumbnail(); //INSERT $query = 'INSERT INTO tb_jitp_videos (vid_id, vid_url, vid_vCode, vid_thumbnail, vid_episodeNr, cat_id) VALUES (null, "' . $url . '", "' . $vCode . '", "' . $thumbnail . '", ' . $episodeNr . ', ' . $categorieID . ' )'; if (!mysql_query($query)) { $this->errors = mysql_error(); return false; } //CLOSE CONNECTION $this->close(); return true; } } o proble ma é o seguinte, quando eu faço o select funciona $conn = new DB_conn(); $conn->getAllVideos(); mas quando eu quero fazer um insert $conn = new DB_conn(); if ($conn->addVideo('http://www.youtube.com/watch?feature=player_embedded&v=PhQuE9gVLBw', '32', '1')) { echo 'boa'; } else { echo $conn->errors; } O erro é o seguinte: No database selected Alguém me pode dar uma ajudinha? Obrigado Edited June 2, 2012 at 08:45 PM by MASNathan
HappyHippyHippo Posted June 2, 2012 at 09:12 PM Report #459889 Posted June 2, 2012 at 09:12 PM (edited) como o código é o mesmo (a chamada da função connect) o problema deverá se situar na utilização da classe em código que não apresentas. por essa razão, o único problema que vou referência não é directamente relacionado com o erro descrito mas algo que tem haver com a ligação à base de dados (podendo resultar no teu erro) imaginemos que executas as duas funções da classe consecutivas $conn = new DB_conn(); $conn->getAllVideos(); $conn->addVideo('http://www.youtube.com/watch?feature=player_embedded&v=PhQuE9gVLBw', '32', '1'); A função connect será chamada duas vezes. Isto implica que criarás duas ligações à base de dados. Bem, na realidade não deverá criar porque a segunda chamada irá falhar (normalmente). O meu conselho é criares uma classe de ligação com a ligação privada e uma função singleton. Desta forma estarás sempre a usar a mesma ligação para todas as interacções com a base de dados. Ao generalizar este problema a outras classes que poderás ter (com novas ligações à base de dados) o problema poderá se situar na criação de múltiplas ligações, mesmo que estas ligações sejam efectuadas em classes diferentes. Edited June 2, 2012 at 09:13 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
MASNathan Posted June 2, 2012 at 09:44 PM Author Report #459892 Posted June 2, 2012 at 09:44 PM ok, obrigado.. tópco resolvido
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now