Maison > Article > développement back-end > Pourquoi est-ce que j'obtiens l'erreur « Erreur fatale : opérateur [] non pris en charge pour les chaînes » lors de la mise à jour de ma base de données ?
Dans le développement Web, il est courant de rencontrer des erreurs lorsque vous travaillez avec des bases de données et des tableaux. L'une de ces erreurs est "Erreur fatale : opérateur [] non pris en charge pour les chaînes". Cette erreur se produit lorsqu'une tentative est faite d'utiliser la syntaxe push de tableau sur une variable qui n'a pas été correctement déclarée en tant que tableau.
Dans le code fourni, les lignes suivantes sont chargées de récupérer les données d'une base de données et de les affecter aux tableaux :
<code class="php">$namesql1 = "SELECT name,date,text,date2 FROM table WHERE something= '$something'"; $nameresult1 = mysql_query($namesql1); while ($row = mysql_fetch_array($nameresult1, MYSQL_ASSOC)) { $name[] = $row['name']; $date[] = $row['date']; $text[] = $row['text']; $date2[] = $row['date2 ']; }</code>
Ici, les variables $name, $date, $text et $date2 sont initialisées comme tableaux et sont utilisés pour stocker les données correspondantes de la base de données.
L'erreur dans le code se produit dans la ligne suivante :
<code class="php">$wrotesql = "UPDATE service_report SET name ='$name' , $date = '$date',$text = '$text[$nro]', ser_date = '$date2[$nro]' WHERE something = '$something')"";</code>
Dans cette ligne, on tente d'utiliser la syntaxe push du tableau $text[$nro] et $date2[$nro] pour mettre à jour les colonnes $text et $date2 dans la base de données. Cependant, cette syntaxe n'est valable que pour les tableaux et les variables $text et $date2 ont été initialisées sous forme de chaînes. En conséquence, l'erreur "Erreur fatale : opérateur [] non pris en charge pour les chaînes" est déclenchée.
Pour résoudre cette erreur, vous vous devez vous assurer que les variables $text et $date2 sont déclarées sous forme de tableaux avant d'utiliser la syntaxe push de tableau. Une façon de procéder consiste à modifier les affectations de variables dans la boucle while comme suit :
<code class="php">$text = array(); $date2 = array();</code>
Avec ces modifications, les variables $text et $date2 seront initialisées sous forme de tableaux, et vous pourrez utiliser le syntaxe push du tableau pour modifier leur contenu.
En corrigeant l'initialisation incorrecte du tableau, l'"Erreur fatale : opérateur [] non pris en charge pour les chaînes" sera résolue et vous pourrez mettre à jour avec succès les informations de la base de données comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!