Pregunta

Recientemente comencé a trabajar en un nuevo proyecto usando PHP5 y quiero usar sus clases de PDO para ello. El problema es que el controlador PDO de MySQL no es compatible con rowCount (), por lo que no hay forma de ejecutar una consulta y luego obtener el número de filas afectadas o filas devueltas, lo que es un problema bastante grande en lo que a mí respecta. Me preguntaba si alguien más se ha ocupado de esto antes y qué ha hecho para solucionarlo. Tener que hacer un fetch () o fetchAll () para verificar si alguna fila fue afectada o devuelta me parece un truco, prefiero simplemente hacer $ stmt- > numRows () o algo similar.

¿Fue útil?

Solución

Puede emitir una consulta SELECT FOUND_ROWS () justo después de la consulta original SELECT para obtener el recuento de filas.

$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

Consulte también: Documentos MySQL en FOUND_ROWS ( )

Otros consejos

Para aquellos de ustedes que están utilizando procedimientos almacenados de MySQL, esta solución no es realmente factible. Lo que sugeriría que haga es que su procedimiento almacenado cree dos conjuntos de filas. El primero contendrá una fila y una columna, que contiene el número de registros. El segundo será el conjunto de registros que usará para recuperar ese número de filas.

El número de filas ilimitadas puede ser un SELECT COUNT (*) con exactamente la misma cláusula WHERE que el segundo conjunto de filas sin el LIMIT / OFFSET cláusulas.

Otra idea podría ser crear una tabla temporal. Use su declaración SELECT para completar la tabla temporal. Luego puede usar SELECT COUNT (*) FROM tmpTable para su primer conjunto de filas y SELECT * FROM tmpTable para su segundo.

Esta pregunta se basa en varios supuestos falsos y una declaración obsoleta.

En primer lugar, no confunda el número de filas afectadas y seleccionadas . PDO apoyó el primero incluso en '09.

Hablando del número de filas devueltas por la instrucción SELECT, simplemente no necesita ese número. Los datos que tienes son suficientes.

Y sí, hoy en día rowCount () también admite el número de filas seleccionadas de mysql. Pero de nuevo, de todos modos no necesita ese número en una aplicación web promedio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top