8.81 Extension MySQL améliorée
8 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Classes pré-définies . Constantes pré-définies . mysqli_affected_rows . mysqli_autocommit . mysqli_bind_param . mysqli_bind_result . mysqli_change_user . mysqli_character_set_name . mysqli_client_encoding . mysqli_close . mysqli_commit . mysqli_connect_errno . mysqli_connect_error . mysqli_connect . mysqli_data_seek . mysqli_debug . mysqli_disable_reads_from_master . mysqli_disable_rpl_parse . mysqli_dump_debug_info . mysqli_embedded_connect . mysqli_enable_reads_from_master . mysqli_enable_rpl_parse . mysqli_errno . mysqli_error . mysqli_escape_string . mysqli_execute . mysqli_fetch_array . mysqli_fetch_assoc . mysqli_fetch_field_direct . mysqli_fetch_field . mysqli_fetch_fields . mysqli_fetch_lengths . mysqli_fetch_object . mysqli_fetch_row . mysqli_fetch . mysqli_field_count . mysqli_field_seek . mysqli_field_tell . mysqli_free_result . mysqli_get_client_info . mysqli_get_client_version . mysqli_get_host_info . mysqli_get_metadata . mysqli_get_proto_info . mysqli_get_server_info . mysqli_get_server_version . mysqli_info . mysqli_init . mysqli_insert_id . mysqli_kill . mysqli_master_query . mysqli_more_results . mysqli_multi_query . mysqli_next_result . mysqli_num_fields . mysqli_num_rows . mysqli_options . mysqli_param_count . mysqli_ping ->mysqli_prepare . mysqli_query . mysqli_real_connect . mysqli_real_escape_string . mysqli_real_query . mysqli_report . mysqli_rollback . mysqli_rpl_parse_enabled . mysqli_rpl_probe . mysqli_rpl_query_type . mysqli_select_db . mysqli_send_long_data . mysqli_send_query . mysqli_server_end . mysqli_server_init . mysqli_set_charset . mysqli_set_opt . mysqli_sqlstate . mysqli_ssl_set . mysqli_stat . mysqli_stmt_affected_rows . mysqli_stmt_bind_param . mysqli_stmt_bind_result . mysqli_stmt_close . mysqli_stmt_data_seek . mysqli_stmt_errno . mysqli_stmt_error . mysqli_stmt_execute . mysqli_stmt_fetch . mysqli_stmt_free_result . mysqli_stmt_init . mysqli_stmt_num_rows . mysqli_stmt_param_count . mysqli_stmt_prepare . mysqli_stmt_reset . mysqli_stmt_result_metadata . mysqli_stmt_send_long_data . mysqli_stmt_sqlstate . mysqli_stmt_store_result . mysqli_store_result . mysqli_thread_id . mysqli_thread_safe . mysqli_use_result . mysqli_warning_count
|
8.81.64 mysqli_prepare()mysqli->prepare()
Prépare une requête SQL pour l'exécution
[ Exemples avec mysqli_prepare ] PHP 5
Style procédural
mysqli_stmt
mysqli_prepare (
mysqli
link
,
string
query
)
Style orienté objet (méthode)
mysqli
mysqli_stmt
prepare (
string
query
)
mysqli_prepare
prépare la requête SQL
query
et retourne une ressource à utiliser pour les futures
opérations sur le traitement. La requête doit être une requête SQL unique.
| Note | |
Vous ne devez pas ajouter de point virgule ou de
\g
dans la requête.
|
Le paramètre
query
peut inclure un ou plusieurs paramètres
de marques dans la requête SQL avec le caractère "point d'interrogation"
(
?
) à la position appropriée.
| Note | |
Les marques sont autorisées uniquement dans certaines endroits des requêtes SQL.
Par exemple, elles le sont dans la liste VALUES() d'une requête INSERT
(pour spécifier les valeurs des colonnes pour une ligne), ou dans une comparaison
d'une clause WHERE pour spécifier une valeur de comparaison.
Cependant, elles ne sont pas autorisées pour les identifiants (comme les noms de
tables ou de colonnes), dans une liste de sélection où les noms des colonnes doivent
être retournés par une requête SELECT, ou pour spécifier un opérateur tel que
le signe égal (
=
). La dernière restriction est nécessaire
car il est impossible de déterminer le type de paramètre. Il n'est pas non plus autorisé
de comparer les marqueurs avec
NULL
par
? IS NULL
.
En général, les paramètres ne sont autorisés que dans les requêtes DML
(Data Manipulation Language) et non dans les requêtes DDL (Data Defination Language).
|
Les paramètres de marques doivent être liés à des variables utilisées dans
les fonctions
mysqli_stmt_bind_param
et/ou
mysqli_stmt_bind_result
avant d'exécuter la requête ou de récupérer
les lignes.
mysqli_prepare
retourne un objet de traitement ou
FALSE
si une erreur
survient.
| Style orienté objet |
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Echec de la connexion : %s\n", mysqli_connect_error()); exit(); }
$city = "Amersfoort";
/* Crée une requête préparée */ if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* Lecture des paramètres de marques */ $stmt->bind_param("s", $city);
/* Exécution de la requête */ $stmt->execute();
/* Lecture des variables résultantes */ $stmt->bind_result($district);
/* Récupération des valeurs */ $stmt->fetch();
printf("%s est dans le district de %s\n", $city, $district);
/* Fermeture du traitement */ $stmt->close(); }
/* Fermeture de la connexion */ $mysqli->close(); ?>
|
| Style procédural |
<?php $link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Echec de la connexion : %s\n", mysqli_connect_error()); exit(); }
$city = "Amersfoort";
/* Crée une requête préparée */ if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
/* Lecture des paramètres de marques */ mysqli_stmt_bind_param($stmt, "s", $city);
/* Exécution de la requête */ mysqli_stmt_execute($stmt);
/* Lecture des variables résultantes */ mysqli_stmt_bind_result($stmt, $district);
/* Récupération des valeurs */ mysqli_stmt_fetch($stmt);
printf("%s est dans le district de %s\n", $city, $district);
/* Fermeture du traitement */ mysqli_stmt_close($stmt); }
/* Fermeture de la connexion */ mysqli_close($link); ?>
|
L'exemple ci-dessus va afficher :
Amersfoort est dans le district de Utrecht
mysqli_stmt_execute
,
mysqli_stmt_fetch
,
mysqli_stmt_bind_param
,
mysqli_stmt_bind_result
et
mysqli_stmt_close
.
|