usar into inserting insertar formulario editar datos data con php codeigniter

php - into - Codeigniter: estoy buscando usar/conectarme a una base de datos diferente para uno de mis controladores y un modelo



save data to database codeigniter (3)

Estoy buscando usar / conectarme a una base de datos diferente para uno de mis controladores y un modelo. Publiqué esta audiencia ya que en los foros de CI no recibo respuesta.

Añadí esto en database.php:

$db[''tdb''][''hostname''] = "localhost";//localhost $db[''tdb''][''username''] = "username";//root $db[''tdb''][''password''] = "password";//empty $db[''tdb''][''database''] = "databasename"; $db[''tdb''][''dbdriver''] = "mysql"; $db[''tdb''][''dbprefix''] = ""; $db[''tdb''][''pconnect''] = FALSE; $db[''tdb''][''db_debug''] = FALSE; $db[''tdb''][''cache_on''] = FALSE; $db[''tdb''][''cachedir''] = ""; $db[''tdb''][''char_set''] = "utf8"; $db[''tdb''][''dbcollat''] = "utf8_general_ci";

Esto como mi modelo:

<?php class Tadmin_model extends Model{ function Tadmin_model(){ parent::Model(); $tdb = $this->load->database(''tdb'', TRUE); } function FInsert($usernames){ $query = $tdb->query("SELECT * FROM following"); return $query->row(); } } ?>

Y este es el comienzo de mi controlador:

<?php class Tadmin extends Controller{ function Tradmin(){ parent::Controller(); $this->load->model(''tadmin_model'');

Y obtengo este error:

Se ha encontrado un error PHP

Gravedad: aviso

Mensaje: variable indefinida: tdb

Nombre de archivo: modelos / tadmin_model.php

Número de línea: ...

Error fatal: Llamar a una consulta de función miembro () en un objeto no disponible en /blablabla/tadmin_model.php en línea ...

¿Qué estoy haciendo mal aquí?


¿Has intentado cargar $ tdb dentro de la función FInsert? Parece que $ tdb puede ser una variable local y no puede accederse mediante FInsert ...


Su problema aquí no es con el uso de las funciones de la base de datos de CodeIgniter, sino con el alcance variable en las clases. Cuando carga su modelo, se conecta a la base de datos y asigna el resultado a una variable local en el constructor del modelo. Cuando cualquier función finaliza, las variables locales se descartan. Más tarde intenta llamar al método query () en la variable $ tdb que ya se ha descartado y obtiene un error.

Debe almacenar los resultados de $ this-> load-> database () en una ubicación que esté disponible tanto para el constructor como para el método. Podría mover la llamada $ this-> load-> database () al método del controlador y conectarse a la otra base de datos cada vez que llame al método Tradmin en su modelo.

De otro modo, si desea que $ tdb esté disponible para todos los métodos en el modelo, use una variable miembro en la clase, que se vería así ...

<?php class Tadmin_model extends Model{ var $tdb; function Tadmin_model(){ parent::Model(); $this->tdb = $this->load->database(''tdb'', TRUE); } function FInsert($usernames){ $query = $this->tdb->query("SELECT * FROM following"); return $query->row(); } } ?>

Espero que ayude.

Jim.


tdb necesita definirse fuera del alcance del constructor, es decir, como miembro de clase como:

class Tadmin_model extends Model { var $tdb; function Tadmin_model() { parent::Model(); $this->tdb = $this->load->database(''tdb'', TRUE); } }