Notice: Undefined Offset : 2 Comment le Résoudre?
Je vais avoir undefined offset:2 erreurs à la Ligne 11 et 12. C'est le code de la Ligne 6 - 15.
if(isset($_POST['submit'])){
$surveyID =$_POST['surveyCategory'];
for($i=0; $i<count($_POST['id']); $i++){
$questionID = $_POST['id'][$surveyID][$i];
$answer = mysql_real_escape_string(htmlspecialchars($_POST['answer'][$surveyID][$i]));
mysql_query("INSERT INTO answers(survey_id, question_id, answer_body) VALUES ('$surveyID', '$questionID', '$answer')") or die (mysql_error());
}
}
OriginalL'auteur user3103739 | 2013-12-16
Vous devez vous connecter pour publier un commentaire.
undefined offset
signifie qu'un tableau ont couru hors des limites du terrain.C'est à dire, la taille de la matrice est plus petit que l'indice que vous essayez de récupérer un objet.
En regardant ton code, je dirais que sa soit la
$surveyID
qui est plus élevé que la taille de la matrice ($_POST['id']
array) ou le$id
qui est ($_POST['id'][$surveyID]
tableau).Sont tous les deux de ces tableaux fait des tableaux?
Vous semble pour itérer sur les
$_POST['id']
taille de la matrice, mais vous essayez d'obtenir l'objet de la$_POST['id'][$surveyID]
tableau, cela pourrait être un problème, parce que tu ne vérifiez la taille de ce tableau.Vous voulez probablement pour itérer avec:
$_POST['id'][$i]
ou de vérifier la taille de la matrice$_POST['id'][$surveyID]
dans la boucle au lieu (suppose que le plus tard).Je vous recommandons de vérifier que le
$_POST['id']
tableau ont la$surveyID
jeu de clés (et le type, vous vous attendez à être), la cause de la POSTE paramètre pouvait être à peu près n'importe quoi (client d'avoir le plein contrôle sur le post params, ils peuvent envoyer la valeur qu'ils veulent à votre script avec ceux-ci).modifier
Pendant que j'y suis: Toujours valider/escape votre les paramètres de la Demande (dans ce cas
POST
) avant de les insérer dans une base de données.Vous êtes actuellement en utilisant
Mysql_*
qui est Obsolète (sera supprimé à partir de php) et il pourrait être une bonne idée d'aller soitmysqli
ouPDO
.Les deux
PDO
etmysqli
ont Préparées, ce qui aide beaucoup à s'échapper de données (ou au moins voir à ce que les données insérées à la base de données ne permet pas de faire de mauvaises choses avec elle, comme sql-injection).Alors s'il vous plaît jeter un oeil à ceux (vérifier l'php.net docs)!
OriginalL'auteur Jite
Vous
count
ing$_POST['id']
, mais une itération sur$_POST['id'][$surveyID]
.Changement de
$i < count($_POST['id'][$surveyID])
OriginalL'auteur Niet the Dark Absol
erreur
undefined offset:2
ce problème se produit en raison d'lorsque vous êtes à l'aide d'un indice qui n'existe pas.
donc problème dans votre code, c'est que votre message n'a pas soumis à l'indice que vous utilisez.
Donc d'imprimer vos
$_POST
comme suit et de le vérifier.OriginalL'auteur Satish Sharma
Essayez d'ajouter un
print_r($_POST['id'])
pour voir ce que cet élément du tableau contient.Je parie que ce n'est pas un tableau multidimensionnel.
OriginalL'auteur John Allen
OriginalL'auteur Pila