Introducción
PHP Nivel de conocimiento: Principiante.
Este tutorial es para aquellos que saben de PHP suficiente para saber que la solución de problemas SQL y cualquier otro problema podría ser difícil, especialmente cuando el archivo llega a más de 500 líneas de código. He llegado a una solución (técnica) para esto. Para hacer más fácil la solución de problemas.
Requisitos para realizar este tutorial con éxito...además de algún tipo de servidor PHP y el conocimiento, no tengo ningún problema con él. Usted puede obtener WAMP para la prueba local...su libre.
El problema de
¿Alguna vez ha tratado de corregir un error cuando lo único que consigue es
Desconocido "en la columna" en el campo de lista de ? Y hay un montón de SQL en esa página y usted tiene que ir y ver que uno está escrito incorrectamente? Bueno, este tutorial te ayudarían a solucionar ese problema.
Si usted ya tiene un enorme archivo que desea utilizar esta técnica en...usted puede utilizar una simple búsqueda / reemplazar la función construir en la mayoría de los editores de...incluso el Bloc de notas regulares que venía con el ordenador (probablemente gif "alt =": lol: "title =" Laughing "> )
La Solución
Hay dos constantes predefinidas que nos ayude aquí...El primero es el número de línea que el analizador está encendido y el segundo es el archivo que la función está activada. De esta manera se sabe en qué línea
y archivo se produjo el error si tiene una clase o simplemente algo de código PHP en el que incluyen un archivo en otro.
1: __LINE__ = La línea que el analizador está encendido.
2: __FILE__ = El archivo que está en el analizador.
Ahora, ¿cómo podemos conseguir que esto funcione para nosotros? Digamos que tenemos la siguiente instrucción SQL (tiene un error en el que...)
<?php
$sql = "CREATE TABLE `table` (
`ID` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`field1` VARCHAR(255) NOT NULL,
`field2` VARCHAR(255) NOT NULL
)
ENGINE = innodb;";
mysql_query($sql) or die(mysql_error());
$sql = "INSERT INTO `{$dbName}`.`table` (
`field1`,
`field3`,
) VALUES ('". NULL ."', 'VALUE1','VALUE2');";
mysql_query($sql) or die(mysql_error());
?>
- <?php
- $sql = "CREATE TABLE `table` (
- `ID` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- `field1` VARCHAR(255) NOT NULL,
- `field2` VARCHAR(255) NOT NULL
- )
- ENGINE = innodb;";
- mysql_query($sql) or die(mysql_error());
- $sql = "INSERT INTO `{$dbName}`.`table` (
- `field1`,
- `field3`,
- ) VALUES ('". NULL ."', 'VALUE1','VALUE2');";
- mysql_query($sql) or die(mysql_error());
- ?>
¿Me ves usando mysql_error (); allí? Eso no es suficiente cuando lo único que obtenemos de él es
Desconocido "en la columna" en el campo de lista de Por cierto, el error es que no hay campo3 creado en el cuadro...Así que usted conseguirá que el error de que no le de mucho para seguir adelante.
Incluso si el error que mysql_error (); escupe tiene un número, por lo general tiene
1 como el número de línea cuando el SQL es realmente en la línea 986 en medio de una tonelada de otros LSQ que tienes que mirar a través de encontrar el error de...Entonces, ¿qué puede hacer?
Usar la __LINE__ y constantes predefinidas __FILE__...Así que en este caso, el mysql_query () se vería así...
<?php
$sql = "CREATE TABLE `table` (
`ID` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`field1` VARCHAR(255) NOT NULL,
`field2` VARCHAR(255) NOT NULL
)
ENGINE = innodb;";
mysql_query($sql) or die(mysql_error() ." ( at line <strong>". (__LINE__) ."</strong> in <strong>". (__FILE__) ."</strong>)");
$sql = "INSERT INTO `{$dbName}`.`table` (
`field1`,
`field3`,
) VALUES ('". NULL ."', 'VALUE1','VALUE2');";
mysql_query($sql) or die(mysql_error() ." ( at line <strong>". (__LINE__) ."</strong> in <strong>". (__FILE__) ."</strong>)");
?>
- <?php
- $sql = "CREATE TABLE `table` (
- `ID` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- `field1` VARCHAR(255) NOT NULL,
- `field2` VARCHAR(255) NOT NULL
- )
- ENGINE = innodb;";
- mysql_query($sql) or die(mysql_error() ." ( at line <strong>". (__LINE__) ."</strong> in <strong>". (__FILE__) ."</strong>)");
- $sql = "INSERT INTO `{$dbName}`.`table` (
- `field1`,
- `field3`,
- ) VALUES ('". NULL ."', 'VALUE1','VALUE2');";
- mysql_query($sql) or die(mysql_error() ." ( at line <strong>". (__LINE__) ."</strong> in <strong>". (__FILE__) ."</strong>)");
- ?>
De esta manera, usted tendrá un poco de conocimiento de realidad, donde el error que ha ocurrido.
Yendo un paso más allá
Sí, ¿por qué no ir un paso más lejos con esto? Todos lo hacen...Realiza tus propios errores, cuando es necesario. Set, lo que me gusta llamar, "error de disparadores".
Digamos que si tengo una...elseif...declaración de los demás. Bueno en primer lugar, permite que el cambio que cambiar...caso...operador.
<?php
switch($var)
{
case null:
case "index":
$this->template('index');
break;
case "page":
$this->template('page');
break;
default:
echo "<p><strong>ERROR 1:</strong> Variable $var unrecognized on line ". (__LINE__) ." in file ". (__FILE__) ."</p>"\n";
break;
}
?>
- <?php
- switch($var)
- {
- case null:
- case "index":
- $this->template('index');
- break;
- case "page":
- $this->template('page');
- break;
- default:
- echo "<p><strong>ERROR 1:</strong> Variable $var unrecognized on line ". (__LINE__) ." in file ". (__FILE__) ."</p>"\n";
- break;
- }
- ?>
Sí, yo sólo lo hizo. He creado mi propio error. Esto se me ayude, así como al usuario si el usuario se desplaza en el territorio de error. Significa "DONT GO THERE...Errores ocurren ".
Espera, por lo general significa desencadenar establece algo fuera de...así que si yo lo llamo un "gatillo de error" ¿qué soy yo de salir? Bueno, el error de curso.
El gatillo no es el error en sí, sino la causa del error. Normalmente la gente acaba de salir de allí por lo que si el usuario va allí que debe ser un error y sólo ver una página en blanco, el usuario vería en apuros. Facilidad de su mente y dicen que vagaban en "territorio de error".
Otro paso por el camino trillado?
¿Por qué no establecer su propia función de presentación de informes de error...Así que esta vez se puede hacer algo como
$error->set_error(__LINE__,__FILE__,'Error Message');
así que usted podría hacer algo más y mejores cosas de informe de errores...incluso configurar el nivel de error...como E_ALL o E_WARNING...
Usted puede hacer eso con una función de simple llamado
trigger_error y sus miembros de la familia que figuran en la "También" en esa página.
Las advertencias se puede utilizar para ello son...
- E_USER_ERROR
- E_USER_WARNING
- E_USER_NOTICE
Y la explicación de ellas se pueden encontrar
aquí Recuerde, la única del tipo * E_USER_ advertencias que pueden ser utilizados y no todas las constantes de otra función de error.
De todos modos, Im justo decir lo que he aprendido.
gif "alt =": lol: "title =" Laughing "> con una colección de funciones tales como set_error (); clear_error (); count_errors () y muchas más cosas si usted es bueno con PHP y saber cómo utilizar las clases y $ this, y la única flecha "->" y flechas dobles "=>"
Usted puede leer
este tutorial realizados por spork para tener una mejor idea de lo que puede hacer.
Conclusión
Usted acaba de aprender una buena técnica para hacer más fácil la solución de problemas (esperemos).
No se olvide de usar __LINE__ y __FILE__ siempre que las necesidades.