mysqli_error - php mysql query




Référence-Que signifie cette erreur en PHP? (20)

Qu'est-ce que c'est?

Ceci est un certain nombre de réponses sur les avertissements, les erreurs et les avis que vous pourriez rencontrer lors de la programmation PHP et n'ont aucune idée de comment réparer. Il s'agit également d'un wiki communautaire, de sorte que tout le monde est invité à participer à l'ajout et au maintien de cette liste.

Pourquoi est-ce?

Des questions telles que "En-têtes déjà envoyés" ou "Appeler un membre d'un non-objet" s'affichent fréquemment dans Stack Overflow. La cause première de ces questions est toujours la même. Ainsi, les réponses à ces questions les répètent généralement, puis montrent à l'OP quelle ligne changer dans son cas particulier. Ces réponses n'ajoutent aucune valeur au site car elles s'appliquent uniquement au code particulier du PO. Les autres utilisateurs ayant la même erreur ne peuvent pas facilement lire la solution car ils sont trop localisés. C'est triste, car une fois que vous avez compris la cause première, la correction de l'erreur est triviale. Par conséquent, cette liste tente d'expliquer la solution d'une manière générale à appliquer.

Que devrais-je faire ici?

Si votre question a été marquée comme doublon, veuillez trouver votre message d'erreur ci-dessous et appliquer le correctif à votre code. Les réponses contiennent généralement d'autres liens pour enquêter au cas où la réponse générale ne le permettrait pas.

Si vous souhaitez contribuer, veuillez ajouter votre message d'erreur "favori", avertissement ou avis, un par réponse, une courte description de ce que cela signifie (même si ce n'est que la mise en évidence des termes sur leur page de manuel), une solution possible une liste des questions et réponses existantes qui ont de la valeur. Aussi, n'hésitez pas à améliorer les réponses existantes.

La liste

Regarde aussi


Attention: [function] attend que le paramètre 1 soit resource, booléen donné

(Une variation plus générale de Warning: mysql_fetch_array () s'attend à ce que le paramètre 1 soit resource, boolean donné )

Les ressources sont un type en PHP (comme les chaînes, les entiers ou les objets). Une ressource est un blob opaque sans aucune valeur intrinsèquement significative. Une ressource est spécifique et définie par un certain ensemble de fonctions ou d'extensions PHP. Par exemple, l'extension Mysql définit deux types de ressources :

Deux types de ressources sont utilisés dans le module MySQL. Le premier est l'identifiant de lien pour une connexion à une base de données, le second une ressource qui contient le résultat d'une requête.

The cURL extension defines another two resource types :

... a cURL handle and a cURL multi handle.

When var_dump ed, the values look like this:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

That's all most resources are, a numeric identifier ( (1) ) of a certain type ( (curl) ).

You carry these resources around and pass them to different functions for which such a resource means something. Typically these functions allocate certain data in the background and a resource is just a reference which they use to keep track of this data internally.

The " ... expects parameter 1 to be resource, boolean given " error is typically the result of an unchecked operation that was supposed to create a resource, but returned false instead. For instance, the fopen function has this description:

Return Values

Returns a file pointer resource on success, or FALSE on error.

So in this code, $fp will either be a resource(x) of type (stream) or false :

$fp = fopen(...);

If you do not check whether the fopen operation succeed or failed and hence whether $fp is a valid resource or false and pass $fp to another function which expects a resource, you may get the above error:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

You always need to error check the return value of functions which are trying to allocate a resource and may fail :

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

Related Errors:


Attention: Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés

Se produit lorsque votre script tente d'envoyer un en-tête HTTP au client mais qu'il y en avait déjà eu auparavant, ce qui a entraîné l'envoi d'en-têtes au client.

C'est un E_WARNING et ça n'arrêtera pas le script.

Un exemple typique serait un fichier de modèle comme ceci:

<html>
    <?php session_start(); ?>
    <head><title>My Page</title>
</html>
...

La fonction session_start() essaiera d'envoyer les en-têtes avec le cookie de session au client. Mais PHP a déjà envoyé des en-têtes lors de l'écriture de l'élément <html> dans le flux de sortie. Vous devez déplacer le session_start() vers le haut.

Vous pouvez résoudre ce problème en parcourant les lignes avant que le code déclenche l'avertissement et vérifier où il sort. Déplacez n'importe quel code d'envoi d'en-tête avant ce code.

Une sortie souvent négligée est de nouvelles lignes après la fermeture de PHP ?> . Il est considéré comme une pratique standard d'omettre ?> Quand c'est la dernière chose dans le fichier. De même, une autre cause commune de cet avertissement est lorsque l'ouverture <?php a un espace vide, une ligne ou un caractère invisible avant, provoquant l'envoi par le serveur web des en-têtes et des espaces / newline lorsque PHP commence l'analyse. soumettre un en-tête

Si votre fichier contient plus d'un bloc de code <?php ... ?> , Vous ne devriez pas avoir d'espaces entre eux. (Remarque: vous pourriez avoir plusieurs blocs si vous aviez du code construit automatiquement)

Assurez-vous également que vous n'avez pas de marque de commande Byte dans votre code, par exemple lorsque le codage du script est UTF-8 avec BOM.

Questions connexes:


Attention: restriction open_basedir en vigueur

Cet avertissement peut apparaître avec diverses fonctions liées à l'accès aux fichiers et aux répertoires. Il avertit d'un problème de configuration.

Quand il apparaît, cela signifie que l'accès à certains fichiers a été interdit.

L'avertissement lui-même ne casse rien, mais le plus souvent un script ne fonctionne pas correctement si l'accès au fichier est empêché.

Le correctif consiste normalement à changer la configuration de PHP , le paramètre associé est appelé open_basedir .

Parfois, les mauvais noms de fichier ou de répertoire sont utilisés, le correctif est alors d'utiliser les bons.

Questions connexes:


Avertissement: [fonction] : échec de l'ouverture du flux: [raison]

Cela arrive quand vous appelez un fichier habituellement par include , require ou fopen et PHP n'a pas pu trouver le fichier ou n'a pas assez de permissions pour charger le fichier.

Cela peut arriver pour diverses raisons:

  • le chemin du fichier est incorrect
  • le chemin du fichier est relatif
  • inclure le chemin est mauvais
  • les autorisations sont trop restrictives
  • SELinux est en vigueur
  • et beaucoup plus ...

Une erreur courante est de ne pas utiliser un chemin absolu. Cela peut être facilement résolu en utilisant un chemin complet ou des constantes magiques comme __DIR__ ou dirname(__FILE__) :

include __DIR__ . '/inc/globals.inc.php';

ou:

require dirname(__FILE__) . '/inc/globals.inc.php';

S'assurer que le bon chemin est utilisé est une étape dans le dépannage de ces problèmes, cela peut également être lié à des fichiers inexistants, aux droits du système de fichiers empêchant l'accès ou aux restrictions open basedir par PHP lui-même.

La meilleure façon de résoudre rapidement ce problème consiste à suivre la liste de contrôle de dépannage ci-dessous.

Questions connexes:

Erreurs liées:


Erreur d'analyse: erreur de syntaxe inattendue

Cette erreur vient en deux variatians:

Variation 1

$arr = [1, 2, 3];

Cette syntaxe d'initialisation de tableau n'a été introduite que dans PHP 5.4; cela déclenchera une erreur d'analyse sur les versions antérieures. Si possible, mettez à niveau votre installation ou utilisez l'ancienne syntaxe:

$arr = array(1, 2, 3);

Voir aussi cet exemple du manuel.

Variation 2

$suffix = explode(',', 'foo,bar')[1];

Les résultats de la fonction de déréférencement de tableaux ont également été introduits dans PHP 5.4. S'il n'est pas possible de mettre à niveau, vous devez utiliser une variable (temporaire):

$parts = explode(',', 'foo,bar');
$suffix = $parts[1];

Voir aussi cet exemple du manuel.


Erreur d'analyse: erreur de syntaxe inattendue T_PAAMAYIM_NEKUDOTAYIM

L'opérateur de résolution de portée est également appelé "Paamayim Nekudotayim" de l'hébreu םיים נקודתיים. ce qui signifie "deux points" ou "double point deux fois".

Cette erreur se produit généralement si vous insérez par inadvertance :: dans votre code.

Questions connexes:

Documentation:


Erreur d'analyse: erreur de syntaxe, inattendue T_VARIABLE

Scénario possible

Je n'arrive pas à trouver où mon code s'est mal passé. Voici mon erreur complète:

Erreur d'analyse: erreur de syntaxe, inattendue T_VARIABLE en ligne x

Ce que j'essaie

$sql = 'SELECT * FROM dealer WHERE id="'$id.'"';

Répondre

Erreur d'analyse: Un problème avec la syntaxe de votre programme, comme laisser un point-virgule hors de la fin d'une instruction ou, comme dans le cas ci-dessus, manquer le . opérateur. L'interpréteur arrête d'exécuter votre programme lorsqu'il rencontre une erreur d'analyse.

En termes simples, il s'agit d'une erreur de syntaxe, ce qui signifie qu'il y a quelque chose dans votre code qui l'empêche d'être analysé correctement et donc en cours d'exécution.

Ce que vous devriez faire est de vérifier soigneusement les lignes autour de l'erreur pour les erreurs simples.

Ce message d'erreur signifie que dans la ligne x du fichier, l'interpréteur PHP s'attendait à voir une parenthèse ouverte mais à la place, il a rencontré quelque chose appelé T_VARIABLE . Cette chose T_VARIABLE est appelée un token . C'est la façon dont l'interprète PHP exprime différentes parties fondamentales des programmes. Lorsque l'interprète lit dans un programme, il traduit ce que vous avez écrit dans une liste de jetons. Où que vous T_VARIABLE une variable dans votre programme, il y a un jeton T_VARIABLE dans la liste de l'interpréteur.

Bonne lecture: Liste des jetons d'analyseur

Assurez-vous donc d'activer au moins E_PARSE dans votre E_PARSE php.ini . Les erreurs d'analyse ne doivent pas exister dans les scripts de production.

J'ai toujours recommandé d'ajouter l'instruction suivante, en codant:

error_reporting(E_ALL);

Rapport d'erreur PHP

Aussi une bonne idée d'utiliser un IDE qui vous permettra de connaître les erreurs d'analyse lors de la frappe. Vous pouvez utiliser:

  1. NetBeans (belle paix de la beauté, logiciel libre) (le meilleur à mon avis)
  2. PhpStorm (oncle Gordon aime ceci: P, plan payé, contient des logiciels propriétaires et libres)
  3. Eclipse (beauté et bête, logiciel libre)

Questions connexes:

  • Référence: PHP Parse / Syntaxe Erreurs; et Comment les résoudre?

Erreur d'analyse: erreur de syntaxe, inattendue T_XXX

T_XXX lorsque vous avez T_XXX jeton T_XXX à un endroit inattendu, des parenthèses déséquilibrées (superflues), l'utilisation d'une balise courte sans l'activer dans php.ini, et bien d'autres.

Questions connexes:

Pour plus d'aide, voir:


Erreur fatale: Impossible de redéclarer la classe [nom de la classe]

Erreur fatale: impossible de redéclairer [nom de la fonction]

Cela signifie que vous utilisez deux fois la même fonction / nom de classe et que vous devez renommer l'un d'entre eux, ou parce que vous avez utilisé require ou include où vous devriez utiliser require_once ou include_once .

Quand une classe ou une fonction est déclarée en PHP, elle est immuable et ne peut pas être déclarée plus tard avec une nouvelle valeur.

Considérez le code suivant:

class.php

<?php

class MyClass
{
    public function doSomething()
    {
        // do stuff here
    }
}

index.php

<?php

function do_stuff()
{
   require 'class.php';
   $obj = new MyClass;
   $obj->doSomething();
}

do_stuff();
do_stuff();

Le deuxième appel à do_stuff() produira l'erreur ci-dessus. En changeant require pour require_once , nous pouvons être certains que le fichier qui contient la définition de MyClass ne sera chargé qu'une fois, et l'erreur sera évitée.


Erreur fatale: La taille de la mémoire autorisée de XXX octets est épuisée (tentative d'allocation de XXX octets)

Il n'y a pas assez de mémoire pour exécuter votre script. PHP a atteint la limite de mémoire et arrête de l'exécuter. Cette erreur est fatale, le script s'arrête. La valeur de la limite de mémoire peut être configurée dans le fichier php.ini ou en utilisant ini_set('memory_limit', '128 M'); dans le script (qui écrasera la valeur définie dans php.ini ). Le but de la limite de mémoire est d'empêcher un seul script PHP d'engloutir toute la mémoire disponible et de faire tomber tout le serveur web.

La première chose à faire est de minimiser la quantité de mémoire dont votre script a besoin. Par exemple, si vous lisez un fichier volumineux dans une variable ou que vous extrayez plusieurs enregistrements d'une base de données et que vous les stockez tous dans un tableau, cela peut nécessiter beaucoup de mémoire. Changez votre code pour lire à la place le fichier ligne par ligne ou récupérer les enregistrements de base de données un à la fois sans les stocker tous en mémoire. Cela nécessite un peu de conscience conceptuelle de ce qui se passe dans les coulisses et quand les données sont stockées dans la mémoire par rapport à d'autres.

Si cette erreur se produisait lorsque votre script n'effectuait pas de travail nécessitant beaucoup de mémoire, vous devez vérifier votre code pour voir s'il y a une fuite de mémoire. La fonction memory_get_usage est votre ami.

Questions connexes:

  • Tous "Erreur fatale: La taille de la mémoire autorisée de XXX octets est épuisée" Questions sur

Erreur fatale: appel à une fonction membre ... sur un non-objet

Se produit avec un code similaire à xyz->method()xyz n'est pas un objet et donc cette method ne peut pas être appelée.

C'est une erreur fatale qui va stopper le script (forward notice de compatibilité: il deviendra une erreur rattrapable à partir de PHP 7).

Le plus souvent, c'est un signe que le code a des vérifications manquantes pour les conditions d'erreur. Validez qu'un objet est en fait un objet avant d'appeler ses méthodes.

Un exemple typical serait

// ... some code using PDO
$statement = $pdo->prepare('invalid query', ...);
$statement->execute(...);

Dans l'exemple ci-dessus, la requête ne peut pas être préparée et prepare() affectera false à $statement . Essayer d'appeler la méthode execute() entraînera alors l'erreur fatale car false est un "non-objet" car la valeur est un booléen.

Découvrez pourquoi votre fonction a renvoyé un booléen au lieu d'un objet. Par exemple, vérifiez l'objet $pdo pour la dernière erreur survenue. Les détails sur la façon de déboguer cela dépendront de la façon dont les erreurs sont traitées pour la fonction / l'objet / la classe en question.

Si même la ->prepare échoue, alors votre objet $pdo base de données $pdo n'est pas passé dans la portée actuelle . Trouvez où il a été défini. Puis passez-le en paramètre, stockez-le en tant que propriété ou partagez-le via la portée globale.

Un autre problème peut être la création conditionnelle d'un objet, puis essayer d'appeler une méthode en dehors de ce bloc conditionnel. Par exemple

if ($someCondition) {
    $myObj = new MyObj();
}
// ...
$myObj->someMethod();

En essayant d'exécuter la méthode en dehors du bloc conditionnel, votre objet peut ne pas être défini.

Questions connexes:

  • Appel à une fonction membre sur un non-objet
  • Liste tout PHP "Erreur fatale: Appel à une fonction membre ... sur un non-objet" Questions sur

Erreur irrécupérable: Utiliser $ this quand il n'est pas dans un contexte d'objet

$this est une variable spéciale en PHP qui ne peut pas être assignée. S'il est accédé dans un contexte où il n'existe pas, cette erreur fatale est donnée.

Cette erreur peut se produire:

  1. Si une méthode non statique est appelée statiquement. Exemple:

    class Foo {
       protected $var;
       public function __construct($var) {
           $this->var = $var;
       }
    
       public static function bar () {
           // ^^^^^^
           echo $this->var;
           //   ^^^^^
       }
    }
    
    Foo::bar();
    

    Comment corriger: réexaminez votre code, $this ne peut être utilisé que dans un contexte d'objet, et ne devrait jamais être utilisé dans une méthode statique. En outre, une méthode statique ne doit pas accéder à la propriété non statique. Utilisez self::$static_property pour accéder à la propriété statique.

  2. Si le code d'une méthode de classe a été copié dans une fonction normale ou simplement dans la portée globale et en conservant la variable spéciale $this .
    Comment corriger: Passez en revue le code et remplacez $this par une variable de substitution différente.

Questions connexes:

  1. Appelez la méthode non-statique comme statique: Erreur fatale de PHP: Using $ this quand pas dans le contexte d'objet
  2. Copier le code: Erreur fatale: Utiliser $ this quand il n'est pas dans un contexte d'objet
  3. Tout "Utiliser $ this quand il n'est pas dans un contexte d'objet" Questions sur

Remarque: Décalage de chaîne non initialisé: *

Comme son nom l'indique, ce type d'erreur se produit lorsque vous tentez probablement d'itérer ou de trouver une valeur dans le tableau avec une clé non existante.

Considérez-vous, essayez d'afficher chaque lettre de $string

$string = 'ABCD'; 
for ($i=0, $len = strlen($string); $i <= $len; $i++){
    echo "$string[$i] \n"; 
}

L'exemple ci-dessus va générer ( démo en ligne ):

A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X

Et, dès que le script se termine en écho à D vous obtenez l'erreur, car dans la boucle for() , vous avez dit à PHP de vous montrer le caractère de la première à la cinquième corde de 'ABCD' Qui existe, mais depuis le la boucle commence à compter à partir de 0 et fait écho à D au moment où elle atteint 4 , elle va lancer une erreur de décalage.

Erreurs similaires:

  • Chaîne illégale offset 'option 1'

Remarque: Utilisation de la constante non définie XXX - supposée 'XXX'

ou, en PHP 7.2 ou plus tard:

Attention: utilisation de la constante non définie XXX - supposée 'XXX' (ceci provoquera une erreur dans une future version de PHP)

Cette notification se produit lorsqu'un jeton est utilisé dans le code et semble être une constante, mais une constante de ce nom n'est pas définie.

L'une des causes les plus fréquentes de cet avis est l'omission de citer une chaîne utilisée comme clé de tableau associative.

Par exemple:

// Wrong
echo $array[key];

// Right
echo $array['key'];

Une autre cause courante est un signe $ (dollar) manquant devant un nom de variable:

// Wrong
echo varName;

// Right
echo $varName;

Ou peut-être avez-vous mal orthographié une autre constante ou un mot-clé:

// Wrong
$foo = fasle;

// Right
$foo = false;

Cela peut aussi être un signe qu'une extension ou une bibliothèque PHP nécessaire est manquante lorsque vous essayez d'accéder à une constante définie par cette bibliothèque.

Questions connexes:


Rien n'est vu. La page est vide et blanche.

Aussi connu comme la page blanche de la mort ou écran blanc de la mort . Cela se produit lorsque le rapport d'erreurs est désactivé et qu'une erreur fatale (souvent une erreur de syntaxe) s'est produite.

Si la journalisation des erreurs est activée, vous trouverez le message d'erreur concret dans votre journal des erreurs. Ce sera généralement dans un fichier appelé "php_errors.log", soit dans un emplacement central (par exemple /var/log/apache2 sur de nombreux environnements Linux) ou dans le répertoire du script lui-même (parfois utilisé dans un environnement d'hébergement partagé).

Parfois, il peut être plus simple d'activer temporairement l'affichage des erreurs. La page blanche affichera alors le message d'erreur. Faites attention car ces erreurs sont visibles par tous ceux qui visitent le site.

Cela peut être facilement fait en ajoutant en haut du script le code PHP suivant:

ini_set('display_errors', 1); error_reporting(~0);

Le code activera l'affichage des erreurs et définira le rapport au plus haut niveau.

Puisque ini_set() est exécuté à l'exécution, il n'a aucun effet sur les erreurs d'analyse syntaxique. Ces erreurs apparaîtront dans le journal. Si vous voulez les afficher dans la sortie (par exemple dans un navigateur), vous devez définir la directive display_startup_errors sur true . Faites-le soit dans le php.ini ou dans un .htaccess ou par toute autre méthode qui affecte la configuration avant l' exécution .

Vous pouvez utiliser les mêmes méthodes pour définir les directives log_errors et log_errors afin de choisir votre propre emplacement de fichier journal.

En regardant dans le journal ou en utilisant l'affichage, vous obtiendrez un message d'erreur beaucoup mieux et la ligne de code où votre script s'arrête.

Questions connexes:

Erreurs liées:


Code doesn't run/what looks like parts of my PHP code are output

If you see no result from your PHP code whatsoever and/or you are seeing parts of your literal PHP source code output in the webpage, you can be pretty sure that your PHP isn't actually getting executed. If you use View Source in your browser, you're probably seeing the whole PHP source code file as is. Since PHP code is embedded in <?php ?> tags, the browser will try to interpret those as HTML tags and the result may look somewhat confused.

To actually run your PHP scripts, you need:

  • a web server which executes your script
  • to set the file extension to .php, otherwise the web server won't interpret it as such*
  • to access your .php file via the web server

* Unless you reconfigure it, everything can be configured.

This last one is particularly important. Just double clicking the file will likely open it in your browser using an address such as:

file://C:/path/to/my/file.php

This is completely bypassing any web server you may have running and the file is not getting interpreted. You need to visit the URL of the file on your web server, likely something like:

http://localhost/my/file.php

You may also want to check whether you're using short open tags <? instead of <?php and your PHP configuration has turned short open tags off.

Also see PHP code is not being executed, instead code shows on the page


Notice: Array to string conversion

This simply happens if you try to treat an array as a string:

$arr = array('foo', 'bar');

echo $arr;  // Notice: Array to string conversion
$str = 'Something, ' . $arr;  // Notice: Array to string conversion

An array cannot simply be echo 'd or concatenated with a string, because the result is not well defined. PHP will use the string "Array" in place of the array, and trigger the notice to point out that that's probably not what was intended and that you should be checking your code here. You probably want something like this instead:

echo $arr[0];  // displays foo
$str = 'Something ' . join(', ', $arr); //displays Something, foo, bar

Or loop the array:

foreach($arr as $key => $value) {
    echo "array $key = $value";
    // displays first: array 0 = foo
    // displays next:  array 1 = bar
}

If this notice appears somewhere you don't expect, it means a variable which you thought is a string is actually an array. That means you have a bug in your code which makes this variable an array instead of the string you expect.


Notice: Trying to get property of non-object error

Happens when you try to access a property of an object while there is no object.

A typical example for a non-object notice would be

$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object

In this case, $users is an array (so not an object) and it does not have any properties.

This is similar to accessing a non-existing index or key of an array (see Notice: Undefined Index ).

This example is much simplified. Most often such a notice signals an unchecked return value, eg when a library returns NULL if an object does not exists or just an unexpected non-object value (eg in an Xpath result, JSON structures with unexpected format, XML with unexpected format etc.) but the code does not check for such a condition.

As those non-objects are often processed further on, often a fatal-error happens next on calling an object method on a non-object (see: Fatal error: Call to a member function ... on a non-object ) halting the script.

It can be easily prevented by checking for error conditions and/or that a variable matches an expectation. Here such a notice with a DOMXPath example:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$divText = $result->item(0)->nodeValue; # Notice: Trying to get property of non-object

The problem is accessing the nodeValue property (field) of the first item while it has not been checked if it exists or not in the $result collection. Instead it pays to make the code more explicit by assigning variables to the objects the code operates on:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$div     = $result->item(0);
$divText = "-/-";
if ($div) {
    $divText = $div->nodeValue;
}
echo $divText;

Related errors:

  • Avis: Index indéfini
  • Fatal error: Call to a member function ... on a non-object

Warning: Division by zero

The warning message 'Division by zero' is one of the most commonly asked questions among new PHP developers. This error will not cause an exception, therefore, some developers will occasionally suppress the warning by adding the error suppression operator @ before the expression. Par exemple:

$value = @(2 / 0);

But, like with any warning, the best approach would be to track down the cause of the warning and resolve it. The cause of the warning is going to come from any instance where you attempt to divide by 0, a variable equal to 0, or a variable which has not been assigned (because NULL == 0) because the result will be 'undefined'.

To correct this warning, you should rewrite your expression to check that the value is not 0, if it is, do something else. If the value is zero you should not divide, or change the value to 1 and then divide so the division results in the equivalent of having divided only by the additional variable.

if ( $var1 == 0 ) { // check if var1 equals zero
    $var1 = 1; // var1 equaled zero so change var1 to equal one instead
    $var3 = ($var2 / $var1); // divide var1/var2 ie. 1/1
} else {
    $var3 = ($var2 / $var1); // if var1 does not equal zero, divide
}

Related Questions:


Warning: Illegal string offset 'XXX'

This happens when you try to access an array element with the square bracket syntax, but you're doing this on a string, and not on an array, so the operation clearly doesn't make sense .

Exemple:

$var = "test";
echo $var["a_key"];

If you think the variable should be an array, see where it comes from and fix the problem there.







warnings