Closed narucho closed 11 years ago
La función "$connection->execute($sql)" no devuelve nada, pero puedes obtener la ultima ID de inserto con $connection->get_last_insert_id(). Hay una función en Base_DB_SQL_Insert_Proxy que tiene un examplo.
Nunca uso DB_Connection_Pool, pero esa linia luce correcto. Quizas "$results = $connection->query($sql)" en lugar de "$results = $connection->execute($sql)" es lo que quieres. No te olvides $connection->open()!
I hope that made sense. :)
2013/1/23 narucho notifications@github.com
Hola un placer, disculpa tengo una duda deje de lado un rato esto de leap y kohana, ando retomando esto, mira buscando informacion quisiera hacer un insert con un simple query pero no se como quedaria el script podrias orientarme? Segun yo quedaria el query asi:
- $connection = DB_Connection_Pool::instance()->get_connection('default');
- $sql = "INSERT INTO tabla (datos) value(valores)";
- $results = $connection->execute($sql);
- if ($results->count()>0){ echo 'Se inserto con exito'; }
- $connection->close();
muchas gracias por tu ayuda.
— Reply to this email directly or view it on GitHubhttps://github.com/spadefoot/kohana-orm-leap/issues/85.
No es necesario cerrer la conexion porque DB_Connection_Pool la gestiona. Para insertar, trata de usar esto examplo:
$connection = DB_Connection_Pool::instance()->get_connection('default');
$sql = 'INSERT INTO tabla (datos) value(valores)';
$connection->execute($sql);
o
$connection = DB_Connection_Pool::instance()->get_connection('default');
$sql = 'INSERT INTO tabla (datos) value(valores)';
$connection->execute($sql);
$id = $connection->get_last_insert_id();
$connection->close();
Para selectar, puedes usar la funcion "query" como asi:
$connection = DB_Connection_Pool::instance()->get_connection('default');
$sql = 'SELECT * FROM tabla;';
$records = $connection->query($sql);
foreach ($records as $record) {
echo Debug::vars($record);
}
o puedes usar la funcion "reader" como asi:
$connection = DB_Connection_Pool::instance()->get_connection('default');
$sql = 'SELECT * FROM tabla;';
$reader = $connection->reader($sql);
while ($reader->read()) {
$record = $reader->row();
echo Debug::vars($record);
}
Hola les doy las gracias me sirvio mucho su ayuda, si con usar $connection->execute($sql); pude insertar la info que quiero, pero me salio un detalle, cuando llega a $id = $connection->get_last_insert_id();. Sale este error:
Hice esto: -if (!$connection->execute($sql)){ echo "se inserto correctamente"; } else { echo "no se inserto"; } Y con eso lo solucione, les agradezco mucho su atencion :+1: PD: Para el delete es igual que el insert me supongo. Gracias de nuevo.
La funcion "get_last_insert_id()" solamente funciona con ID's que son numeros en Oracle y tu tabla tiene que tener un "trigger" como asi:
CREATE SEQUENCE "roles_id_seq" START WITH 1 INCREMENT BY 1;
CREATE TRIGGER "roles_id_trig" BEFORE INSERT ON "roles" FOR EACH ROW DECLARE max_id NUMBER; cur_seq NUMBER; BEGIN IF :new.id IS NULL THEN -- No ID passed, get one from the sequence SELECT "roles_id_seq".nextval INTO :new.id FROM dual; ELSE -- ID was set via insert, so update the sequence SELECT greatest(nvl(max(id),0), :new.id) INTO max_id FROM "roles"; SELECT "roles_id_seq".nextval INTO cur_seq FROM dual; WHILE cur_seq < max_id LOOP SELECT "roles_id_seq".nextval INTO cur_seq FROM dual; END LOOP; END IF; END;
Hola un placer, disculpa tengo una duda deje de lado un rato esto de leap y kohana, ando retomando esto, mira buscando informacion quisiera hacer un insert con un simple query pero no se como quedaria el script podrias orientarme? Segun yo quedaria el query asi:
muchas gracias por tu ayuda.