PHP MySQL INSÉRER la valeur de retour avec une exécution de la requête
Il n'y a rien retourné à partir de MySQL/PHP sur un INSERT requête en cours d'exécution? Voici ma fonction que j'ai dans une CLASSE.
function mysqlQuery($query) {
//Gets the results from the query
$results = mysql_query($query, $this->connection);
//Loops through the queried results as an multi-dimensional array
while($rows = mysql_fetch_array($results, MYSQL_ASSOC)) {
//Push results to single array
$rs[] = $rows;
}
//Return results as array
return $rs;
}
C'est comme ça que j'appelle la fonction
$rs = $dbh->mysqlQuery($query);
Mais l'exécution d'une requête d'INSERTION $rs ne retourne rien. Ma fonction a besoin d'aide ou est-ce le comportement par défaut? Des conseils seraient utiles.
BAH, merci de me rappeler qu'elle retourne TRUE/FALSE. pour une raison que je l'avais dans ma tête il renvoie en fait à une autre valeur, mais après avoir regardé ma fonction je vois que je ne suis pas le contrôle pour le VRAI/FAUX de l'état et seulement en parcourant les résultats de tableau.
Merci à tous pour les réponses correctes, mais d'abord pour répondre correctement a obtenu les points, cheers!
OriginalL'auteur Phill Pafford | 2009-09-28
Vous devez vous connecter pour publier un commentaire.
INSÉRER seulement renvoie true ou false. à renvoyer en fait quelque chose d'utile, vous aurez besoin d'un SELECT ou requête similaire. il n'y a pas de résultat pour chercher avec INSERT.
OriginalL'auteur helloandre
De la documentation php:
Valeurs De Retour
Pour
SELECT
, MONTRER, DÉCRIRE, EXPLIQUER et autres déclarations de retour resultset,mysql_query()
retourne une ressource en cas de succès, ou FALSE en cas d'erreur.Pour les autres types d'instructions SQL,
INSERT
,UPDATE
,DELETE
,DROP
, etc,mysql_query()
retourneTRUE
de la réussite ou deFALSE
en cas d'erreur.Le résultat retourné par la ressource doit être transmis à
mysql_fetch_array()
, et d'autres fonctions pour traiter les tableaux de résultats, d'accéder à des données retournées.Utilisation
mysql_num_rows()
pour savoir combien de lignes ont été retournés pour unSELECT statement
oumysql_affected_rows()
pour trouver le nombre de lignes affectées par uneDELETE
,INSERT
,REPLACE
, ouUPDATE statement.
mysql_query()
également échouer et retournerFALSE
si l'utilisateur n'est pas autorisé à accéder à la table(s) référencée par la requête.OriginalL'auteur Ricardo
De php.net http://us2.php.net/mysql_query
OriginalL'auteur
Généralement, quand les devs sont le renforcement des fonctions de la maison à la manipule des requêtes, ils utilisent deux méthodes. L'un, "requête", utilisé pour les sélections et co, et un, "exec", d'autres Insertions, Mises à jour et d'autres (comme dans l'extension PDO).
Si vous voulez garder votre fonction, ajoutez une instruction if autour de la boucle de vérifier le type de $résultats (avec un is_resource() par exemple),
OriginalL'auteur swordofpain
Dans l'exemple ci-dessous, j'ajoute à mon insérer une clause de "retour" avec la clé primaire de ma table, puis, après l'exécution, je fais une extraction d'obtenir un tableau avec la valeur du dernier id inséré.
Source
OriginalL'auteur shamsieh76
Bien que c'est un très vieux thread, il est toujours d'actualité. Et pour ceux qui trébuchent sur ce (comme moi), n'abandonnez pas! Il y a des options. En fait, voir cette réponse sur DONC
Aussi, pour sqli et aop, voir ce
Essentiellement, d'une instruction insert, suivie par l'une des fonctions énumérées dans ces réponses vont vous donner l'ID du dernier enregistrement.
OriginalL'auteur Chiwda