define('MYSQL_SERVEUR', 'localhost');

define('MYSQL_UTILISATEUR', 'root');

define('MYSQL_MOTDEPASSE', '');

define('MYSQL_BASE', 'test');


//connexion à la base MySQL
$mysql = new MySQLi(MYSQL_SERVEUR, MYSQL_UTILISATEUR, MYSQL_MOTDEPASSE, MYSQL_BASE);

/* Vérification de la connexion */
if ($mysqli->connect_errno) {
    die("Echec de la connexion : %s\n", $mysqli->connect_error);
}
//configuration du charset
$mysqli->set_charset("utf8");

//Requête SQL ne retournant pas de résultat (ex: CREATE TABLE, INSERT, UPDATE, etc.)
$sql = 'CREATE TABLE IF NOT EXISTS blog (login VARCHAR(64) ,message TEXT ,dateheure DATETIME)';
$mysql->query($sql);

$sql = 'INSERT INTO blog (login, message, dateheure) VALUES(\'phpfacile\', \'Tuto MySQL\', NOW())';
$mysql->query($sql);

//Requête SQL retournant des résultats (ex: SELECT)
$sql = 'SELECT * FROM blog';
$res = $mysql->query($sql);
while ($row = $res->fetch_array()) {
    echo $row['login'].':'.$row['dateheure'].':'.$row['message'].'<br />'."\n"; }

//nombre de lignes
$res->num_rows;

// Se protéger des injections SQL
$city = $mysqli->real_escape_string($city);
$mysqli->query("INSERT into myCity (Name) VALUES ('$city')");

//Requête préparée
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->close();

//libération des résultats
$res->free();

//déconnexion de la base MySQL
$mysql->close();

/*fetch_array() : Le second argument optionnel est une constante
indiquant quel type de tableau doit être renvoyé à partir de la
ligne de données courante. Les valeurs possibles pour ce paramètre
sont les constantes MYSQLI_ASSOC, MYSQLI_NUM, et MYSQLI_BOTH. En
utilisant la constante MYSQLI_ASSOC, cette fonction se comportera
comme la fonction mysqli_fetch_assoc(), tandis que MYSQLI_NUM la
fera agir comme la fonction mysqli_fetch_row().
La constante MYSQLI_BOTH, créera elle un tableau qui sera à la fois
associatif et indexé numériquement.*/