Título: Mysql, Php, pdo y goto. Publicado por: #Aitor en 29 Diciembre 2013, 02:01 am Buenas, hasta hace unos días usaba mysql la sintaxis que está obsoleta para PHP. No obstante al leer la documentación que php.net ofrece informaba de que en un futuro, sería eliminado de Php. Y que quedaban como alternativa a ésta, dos opciones. o Mysqli o PDO. Dado que según lo que he leido, y he entendido, Mysqli sólo sirve para bases de datos Mysql, y si en algún momento, decidia cambiar de base de datos, me tocaría cambiar todo el script, cosa que con PDO no.
Finalmente decidí aprender (o hacer intento de aprender) PDO. Así pues, intenté traducir los scripts que ya tenía, a PDO como buenamente pude. Total, al grano... yo tenía este script. Código
No obstante, en PDO me atasque, pues no sabía como comparar para saber si el usuario ya existia. Intenté con do while, pero no dejaba argumentando que estaba tratando con arrays y no con strings. Asi pues la solución más simple, era poner un if en el foreach que fuese recorriendo uno a uno todos los arrays y los comparase. Y una vez los comparase dependiendo del resultado hacer un salto (con salto me refiero a un goto) o seguir con el código. Código
Como podéis ver no es la misma tabla ni base de datos, pero el funcionamiento es el mismo. No obstante, a lo que quiero llegar, es que seguramente hay una forma más 'fácil' o corta, de comprobar si el usuario que se va a registrar ya esta en la base de datos. Y no tenga que usar el goto para saltarme el codigo en caso de que la comprobación sea correcta. Un saludo y gracias. Título: Re: Mysql, Php, pdo y goto. Publicado por: EFEX en 29 Diciembre 2013, 14:42 pm hay estas obteniendo tooodos los registros de la tabla lo que no es conveniente... existen clausulas en mysql para hacer una busqueda minuciosa y mas exacta.
Código
Título: Re: Mysql, Php, pdo y goto. Publicado por: #Aitor en 29 Diciembre 2013, 15:14 pm hay estas obteniendo tooodos los registros de la tabla lo que no es conveniente... existen clausulas en mysql para hacer una busqueda minuciosa y mas exacta. Código
Código
Se supone que cuando la consulta que realizo, encuentra datos ('Select * from pruebas where user = "$usuario"'); debería retornar falso, cuando no se encuentra y true cuando se encuentra, pero por alguna razón, indepentientemente de si el usuario está en la base de datos, entra en el if. es decir, siempre retorna true, aunque no lleve ningún valor... ¿A qué se debe? ¿Qué hago mal? Título: Re: Mysql, Php, pdo y goto. Publicado por: EFEX en 29 Diciembre 2013, 15:41 pm En esos casos tenes que saber que valor tiene $prubea, en este es un objeto y siempre va a ser valido.
Código
fetchColumn() http://es.php.net/manual/en/pdostatement.fetchcolumn.php Título: Re: Mysql, Php, pdo y goto. Publicado por: #!drvy en 29 Diciembre 2013, 16:45 pm Como nota final, si utilizas PDO o MySQLi utiliza sentencias preparadas.
http://at1.php.net/manual/es/pdo.prepared-statements.php Saludos Título: Re: Mysql, Php, pdo y goto. Publicado por: #Aitor en 29 Diciembre 2013, 17:17 pm En esos casos tenes que saber que valor tiene $prubea, en este es un objeto y siempre va a ser valido. Código
fetchColumn() http://es.php.net/manual/en/pdostatement.fetchcolumn.php Gracias, funciona a la perfeción, aunque sigo sin entender, porque al no encontrar un resultado, no retorna false, como con fetchColumn(). A proposito, según el manual de PDO fetchColumn() Devuelve una única columna de la siguiente fila de un conjunto de resultados. No comprendo muy bien, pues he estado haciendo pruebas, y siempre devuelve datos de la primera columna, me explico. Ejemplo de la base de daatos; Código
Código
Devuelve Aitor. Código
Devuelve shiro. Código
Devuelve Aitor. Como podéis ver siempre devuelve de la columna Name, y según http://es1.php.net/manual/es/pdostatement.fetchcolumn.php No debería ser así, o al menos así lo entiendo. Como nota final, si utilizas PDO o MySQLi utiliza sentencias preparadas. http://at1.php.net/manual/es/pdo.prepared-statements.php Saludos Lo estoy echando un vistazo, gracias por el detalle. Y de nuevo, gracias a los dos. Un saludo. Título: Re: Mysql, Php, pdo y goto. Publicado por: EFEX en 30 Diciembre 2013, 01:38 am PDO fetchColumn(): Devuelve una única columna, de la siguiente fila de un conjunto de resultados, siempre retorna una sola columna y es la primera columna(NOMBRE).
Código
Si ques obtener la fila completa podes utilizar fetch() http://www.php.net/manual/es/pdostatement.fetch.php Si queres obtener mas de una fila podes utilizar fetchall() http://www.php.net/manual/es/pdostatement.fetchall.php Creo que asi es... sino corrijanme vengo muy insolado por el sol. ;D Título: Re: Mysql, Php, pdo y goto. Publicado por: #Aitor en 30 Diciembre 2013, 10:57 am PDO fetchColumn(): Devuelve una única columna, de la siguiente fila de un conjunto de resultados, siempre retorna una sola columna y es la primera columna(NOMBRE). Código
Si ques obtener la fila completa podes utilizar fetch() http://www.php.net/manual/es/pdostatement.fetch.php Si queres obtener mas de una fila podes utilizar fetchall() http://www.php.net/manual/es/pdostatement.fetchall.php Creo que asi es... sino corrijanme vengo muy insolado por el sol. ;D Perfecto, esta mañana al levantar me preguntaba si podría aceptar parámetros Muchas gracias por la ayuda a todos. ;P Título: Re: Mysql, Php, pdo y goto. Publicado por: el-brujo en 31 Diciembre 2013, 20:25 pm estoy preparando una entrada en el blog sobre las diferencias entre mysql y mysqli (libmysql y mysqlnd) xD
En realidad para conectar PHP con MySQL hay tres opciones, no dos.
Deberías usar Mysqli (mysql improved, mejorado) pero el problema es que muchos CMS aún usan mysql y muchos ejemplos de código se basan en mysql. Título: Re: Mysql, Php, pdo y goto. Publicado por: :ohk<any> en 1 Enero 2014, 18:35 pm estoy preparando una entrada en el blog sobre las diferencias entre mysql y mysqli (libmysql y mysqlnd) xD En realidad para conectar PHP con MySQL hay tres opciones, no dos.
Deberías usar Mysqli (mysql improved, mejorado) pero el problema es que muchos CMS aún usan mysql y muchos ejemplos de código se basan en mysql. Yo también recomiendo el uso del MySQLi y a pesar de que muchos CMS usan el mysql, pronto se actualizaran obligados por que mysql quedo obsoleto. |