with strip_tags remove from eliminar code allow php prepared-statement

php - remove - strip_tags codeigniter



CuĆ”ndo cerrar DeclaraciĆ³n Preparada (1)

¿Cuándo cerrar declaraciones preparadas en PHP?

Ejemplo:

$query = "insert into web_reviews (title,added_date,reviewer_home_url,read_more_link,summary) values(?,?,?,?,?)"; $stmt = $this->db->prepare($query); $stmt->bind_params($this->title,$this->added_date,$this->reviewer_home_url,$this->read_more,$this->summary); $stmt->execute() or die("Cannot add the date to the database, please try again."); $stmt->close(); $stmt = $this->db->prepare("select id from web_reviews where title = ? and read_more = ?"); $stmt->bind_params($this->title,$this->read_more); $stmt->execute(); $stmt->bind_results($web_review_id); $stmt->close();

¿Debo usar $stmt->close(); ¿aquí?

Editar:

Lo que está escrito en el Manual de PHP y también un comentario del manual dice:

Cierra una declaración preparada. mysqli_stmt_close () también desasigna el identificador de la declaración. Si la declaración actual tiene resultados pendientes o no leídos, esta función los cancela para que se pueda ejecutar la siguiente consulta.

Comentario:

si está repitiendo una declaración en un bucle usando bind_param y así sucesivamente dentro de ella para una operación más grande. Creo que sería bueno limpiarlo con stmt-> close. pero se rompió siempre con un error después de aprox. 250 operaciones. Como lo probé con stmt-> reset funcionó para mí.


Ese es un buen uso del cierre, especialmente porque está planeando hacer otra consulta. Con las declaraciones de PDO y las declaraciones de MySQLi, encuentro que errar por el lado de la limpieza es casi siempre lo mejor: elimina posibles errores en el futuro.

En cuanto a los caballeros con 250 operaciones ... no veo cuál es el verdadero caso de uso. ¿Por qué necesita consultar la base de datos 250 veces diferentes? ¿Por qué no puede consultar la base de datos una vez con 250 registros? O, más probablemente, ¿por qué no puede consultar la base de datos 25 veces con 10 registros?