Bonjour, je suis un peu novice dans ce domaine et je voudrais poser la question à quelqu'un ici qui est un expert du framework codeigniter et de PHP.
Comment utiliser les pilotes mysqli dans les requêtes natives php? Par exemple.
Mon code:
Modèle
class Home_model extends CI_Model{
public function getusers(){
$q = "SELECT * FROM `users`";
return $r = mysqli_query($q);
}
}
Manette:
class Home extends CI_Controller{
public function iterateuser(){
while($row = mysqli_fetch_object($this->Home_model->getusers())){
echo $row->username;
}
}
Mon code ci-dessus est une erreur, signalant que "mysqli_query attend au moins 2 paramètres". Existe-t-il un moyen dans codeigniter de passer le lien sur le premier paramètre mysqli_query () comme décrit dans la documentation php.net http://php.net/manual/fr/mysqli.query.php
aller à:
yourproject/application/config/database.php
changement:
$db['default']['dbdriver'] = 'mysql';
avec:
$db['default']['dbdriver'] = 'mysqli';
Une fois que vous avez spécifié 'mysqli'
, vous pouvez utiliser la fonction suivante pour obtenir mysqli. Par exemple, mysqli_real_escape_str
, etc.:
function get_mysqli() {
$db = (array)get_instance()->db;
return mysqli_connect('localhost', $db['username'], $db['password'], $db['database']);
}
Vous devez modifier le contenu du fichier DB_driver.php
dans votre répertoire système Codeigniter. Aller à:
system/database/DB_driver.php
Et changez la ligne suivante:
var $dbdriver = 'mysql';
à :
var $dbdriver = 'mysqli';
voici une extraction du DB_driver.php
* MySQLi Database Adapter Class - MySQLi only works with PHP 5
*
* Note: _DB is an extender class that the app controller
* creates dynamically based on whether the active record
* class is being used or not.
*
* @package CodeIgniter
* @subpackage Drivers
* @category Database
* @author ExpressionEngine Dev Team
* @link http://ellislab.com/codeigniter/user-guide/database/
*/
class CI_DB_mysqli_driver extends CI_DB {
var $dbdriver = 'mysqli';
Ouvrez le fichier ' database.php ' sous le dossier '/application/config/'
Déplacer à la ligne
$db['default'] = array('dbdriver' => '')
Modifiez-le comme ci-dessous
$db['default'] = array('dbdriver' => 'mysqli')