0x01: prueba si PDO se instala correctamente
Ejecute el siguiente código. Si el parámetro es incorrecto, significa que se ha instalado PDO. Si el objeto no existe, modifique el archivo de configuración de PHP php.ini y cancele los comentarios en el PhP_PDO_YOURSSQLServerhere.extis anterior.
La copia del código es la siguiente:
$ test = new PDO ();
0x02: conectarse a la base de datos
Ejecute el servidor Apache y confirme que el servidor se ha ejecutado y la instalación de PDO es exitosa. Luego conectemos a la base de datos.
La copia del código es la siguiente:
$ dsn = 'mysql: dbname = demo; host = localhost; puerto = 3306';
$ username = 'root';
$ contraseña = 'contraseña_here';
intentar {
$ db = nuevo PDO ($ DSN, $ UserName, $ Password);
} catch (pdoException $ e) {
morir ('no pudo conectarse a la base de datos:
'. $ E);
}
0x03: consulta básica
El uso de consultas y ejecutivo en PDO hace que las bases de datos de consulta sean muy simples. Si desea obtener el número de filas del resultado de la consulta, es muy útil para las declaraciones de consulta seleccionadas.
La copia del código es la siguiente:
$ Datado = <<< SQL
SELECCIONAR *
De 'Foods`
Donde 'sano' = 0
Sql;
$ Foods = $ db-> consulta ($ estado del estado);
Si la consulta anterior es correcta, $ Foods ahora es un objeto de declaración PDO, desde el cual podemos obtener los resultados que necesitamos y cuántos conjuntos de resultados hemos consultado en total.
0x04: Obtenga el número de filas
Si está utilizando la base de datos MySQL, la instrucción PDO contiene un método RowCount para obtener el número de filas en el conjunto de resultados, como se muestra en el siguiente código:
La copia del código es la siguiente:
Echo $ Foods-> RowCount;
0x05: Conjunto de resultados transversales
El estado de estado PDO se puede atravesar utilizando la instrucción Forech, como se muestra en el siguiente código:
La copia del código es la siguiente:
foreach ($ foods-> fetchall () como $ food) {
Echo $ Food ['Nombre']. '
';
}
PDO también admite el método Fetch, que solo devuelve el primer resultado.
0x06: Escape los caracteres especiales ingresados por el usuario
PDO proporciona un método llamado Quote, que permite que los caracteres especiales escapen de los lugares con citas en la cadena de entrada.
La copia del código es la siguiente:
$ input = esto es 'a' '' Bastante peligro '
Después de la transferencia utilizando el método de cotización:
La copia del código es la siguiente:
$ db-> quote ($ input): 'esto es/' s/'a/' '/'/'BITTY Danger/' Rous str/'ing'
0x07: ejecut ()
PDO puede usar el método Exec () para implementar actualizaciones, eliminar e insertar operaciones. Después de la ejecución, devolverá el número de filas afectadas:
La copia del código es la siguiente:
$ Datado = <<< SQL
Eliminar de 'Foods`
Donde `sano '= 1;
Sql;
echo $ db-> exec ($ estado);
0x08: declaración de preprocesamiento
Aunque el método y la consulta EXEC todavía se usan y admiten ampliamente en PHP, el sitio web oficial de PHP aún requiere que todos usen declaraciones de preprocesamiento para reemplazarlas. ¿Por qué? Principalmente porque: es más seguro. Las declaraciones de preprocesamiento no insertan directamente los parámetros en consultas reales, lo que evita muchas inyecciones potenciales de SQL.
Sin embargo, por alguna razón, PDO realmente no usa el preprocesamiento. Simula los métodos de preprocesamiento, inserta datos de parámetros en declaraciones antes de pasar la declaración al servidor SQL, lo que hace que algunos sistemas sean susceptibles a la inyección SQL.
Si su servidor SQL realmente no admite el preprocesamiento, podemos solucionar fácilmente este problema pasando los parámetros durante la inicialización de PDO de la siguiente manera:
La copia del código es la siguiente:
$ db-> setAttribute (pdo :: att_emulate_prepares, falso);
Aquí está nuestra primera declaración de preprocesamiento:
La copia del código es la siguiente:
$ Datado = $ db-> preparar ('seleccionar * de los alimentos donde `name` =? y' sano` '?');
$ statado2 = $ db-> preparar ('seleccionar * de alimentos donde `name` =: name and` siental` =: siental)';
Como se muestra en el código anterior, hay dos formas de crear parámetros, nombre y anónimo (no puede aparecer en una declaración al mismo tiempo). Entonces puede usar BindValue para escribir su entrada:
La copia del código es la siguiente:
$ declaración-> bindValue (1, 'pastel');
$ declaración-> bindValue (2, true);
$ Datadok2-> bindValue (': name', 'pastel');
$ Datadok2-> bindValue (': saludable', falso);
Tenga en cuenta que al usar parámetros con nombre, debe incluir el colon (:). PDO también tiene un método BindParam, que puede unir los valores numéricos por referencia, es decir, solo busca los valores numéricos correspondientes cuando se ejecuta la declaración.
Lo único que queda por hacer ahora es ejecutar nuestra declaración:
La copia del código es la siguiente:
$ declaración-> ejecute ();
$ Declaración2-> ejecute ();
// Obtenga nuestros resultados:
$ Cake = $ Datado-> Fetch ();
$ PIE = $ STATTUM2-> FETCH ();
Para evitar usar solo fragmentos de código BindValue, puede usar una matriz para dar el método de ejecución como parámetro, como este:
La copia del código es la siguiente:
$ Datado-> ejecute (array (1 => 'pastel', 2 => true));
$ Datadok2-> ejecute (Array (': name' => 'PIE', ': saludable' => falso));
0x09: transacciones
Una transacción es ejecutar un conjunto de consultas, pero no guarda su impacto en la base de datos. La ventaja de esto es que si ejecuta 4 declaraciones de inserción interdependientes, cuando uno falla, puede retroceder para que otros datos no se puedan insertar en la base de datos, asegurando que los campos interdependientes se puedan insertar correctamente. Debe asegurarse de que el motor de base de datos que esté utilizando es compatible con las transacciones.
0x10: Iniciar transacción
Simplemente puede usar el método BeginTransaction () para iniciar una transacción:
La copia del código es la siguiente:
$ db-> beginTransaction ();
$ db-> intransaction (); // ¡verdadero!
Luego puede continuar ejecutando la instrucción de operación de su base de datos y enviar la transacción al final:
La copia del código es la siguiente:
$ db-> commit ();
También hay un método Rollback () similar a MySQLI, pero no regaño a todos los tipos (por ejemplo, usando la tabla de caída en MySQL), este método no es realmente confiable, recomiendo tratar de evitar confiar en este método.
0x11: otras opciones útiles
Hay varias opciones que puede considerar usar. Estos se pueden ingresar como el cuarto parámetro cuando su objeto se inicializa.
La copia del código es la siguiente:
$ options = array ($ option1 => $ value1, $ opción [..]);
$ db = nuevo PDO ($ DSN, $ UserName, $ Password, $ Opciones);
PDO :: Attr_Default_Fetch_Mode
Puede elegir qué tipo de resultados se devolverá PDO, como pdo :: fetch_assoc, que le permitirá usar $ resultado ['column_name'], o pdo :: fetch_obj, que devolverá un objeto anónimo para que pueda usar $ resultado-> column_name
También puede poner el resultado en una clase específica (modelo), estableciendo un modo de lectura para cada consulta individual, como esta:
La copia del código es la siguiente:
$ query = $ db-> query ('select * de `foods`');
$ Foods = $ query-> fetchall (pdo :: fetch_class, 'comida');
PDO :: ATTR_ERRMODE
Hemos explicado esto anteriormente, pero aquellos a quienes les gusta TryCatch necesitan usar: PDO :: ERRMODE_EXCEPTION. Si desea lanzar una advertencia de PHP por cualquier razón, use PDO :: errmode_warning.
PDO :: ATTR_TIMEOUT
Cuando está ansioso por la carga del tiempo, puede usar esta propiedad para especificar un tiempo de tiempo de espera para su consulta en segundos. Tenga en cuenta que si el tiempo que establece excede la hora, la excepción E_WARNING predeterminada se lanzará a menos que se cambie PDO :: ATTR_ERRMODE.