sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag abstrahera mysqli-förberedda uttalanden i PHP?

Jag arbetade med Zend_Db_Adapter_Mysqli och Zend_Db_Statement_Mysqli klasser en hel del för att få detta att fungera, eftersom vi ville få det att överensstämma med PDO och PDOStatement gränssnitt. Det var ganska mödosamt, på grund av det förvirrande sättet MySQLi insisterar på att få dig att binda variabler för att få resultat, och mängden hämtningslägen som stöds av PDOStatement .

Om du vill se koden i Zend_Db , var särskilt uppmärksam på funktionernaZend_Db_Statement_Mysqli::_execute() och fetch() . I grund och botten är _execute() metod binder en array av variabelreferenser med call_user_func_array() . Den knepiga delen är att du måste initiera arrayen så att bind_result() funktion hämtar referenserna. Äh, det var inte helt klart, så ta en titt på koden.

Eller använd bara PDO:s MySQL-drivrutin. Det är vad jag skulle göra i dina skor.



  1. Oracle FOR LOOP REVERSE Exempel

  2. Kan inte hitta klassen [org.springframework.orm.hibernate5.LocalSessionFactoryBean] för böna med namnet 'hibernate5AnnotatedSessionFactory'

  3. Hur tar man reda på fragmenterade index och defragmenterar dem i PostgreSQL?

  4. Hur ökar jag hastigheten på denna dataanalys?