Insertar datos en Oracle desde php utilizando parámetros
|Una de las ventajas de utilizar parámetros en las sentencias sql para insertar o actualizar datos en Oracle desde php es la seguridad. Según la página oficial de php al utilizar parámentros se mejora el rendimiento con Oracle y reduce el peligro de recibir inyecciones SQL.
El peligro de la inyección SQL se reduce ya que los datos asociados se vinculan a un parámetro y no directamente en la sentencia sql, además no es necesario utilizar comillas para insertar texto.
Vamos a ver un ejemplo sencillo de como utilizarlo.
Primero creamos la tabla donde guardaremos los datos:
1 2 3 4 5 6 |
CREATE TABLE USUARIOS ( ID INTEGER, NOMBRES VARCHAR2(150 BYTE), APELLIDOS VARCHAR2(150 BYTE) ) |
Y este es el ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php //conexion con oracle $conn= oci_connect('usuario', 'contrasena', '127.0.0.1/ORCL', 'AL32UTF8'); //verificamos si no hay error en la conexion if(!$conn){ $error= oci_error(); die("ERROR: ".$error["message"]); } /* preparamos la sentencia sql * como observan he declarado tres paramentros en la sentencia sql * que recibiran texto desde el oci_bind_by_name más abajo. */ $st= oci_parse($conn, "INSERT INTO USUARIOS (ID, NOMBRES, APELLIDOS) VALUES (:ID, :NOMBRES, :APELLIDOS)"); //variables con los datos $id=1; $nombres='hugo'; $apellidos='lizama'; //vinculamos las variables a la sentencia sql oci_bind_by_name($st, ':ID', $id); oci_bind_by_name($st, ':NOMBRES', $nombres); oci_bind_by_name($st, ':APELLIDOS', $apellidos); //ejecutamos el statement oci_execute($st); echo "termino"; //cerrar conexion oci_close($conn); |
Espero que sea de ayuda. Saludos.
3 comentarios
Muy buen artículo. Una pregunta, en que parte del código se selecciona la base de datos se selecciona la base de datos que se va a utilizar? La tabla es Usuarios, pero a que base de datos pertenece?
Cuando declaras la conexion con la base de datos el usuario es el esquema de oracle al que vas a hacer las consultas. No es como en mysql que el usuario y la base de datos como tal son dos cosas distintas.
Hey! de casualidad tendras algún ejemplo de select por ejemplo para hacer un login desde php con oracle?