2012-05-03 8 views
0

$ status renvoie 0, mais la boucle agit comme son "1". Chose amusante ici mon message d'erreur est "MySQL DB est en cours d'utilisation (état 0)". En d'autres termes: mon instruction if échoue même si elle est vraie.mon instruction "if" renvoie false même si c'est vrai, pourquoi?

Où est l'erreur?

include 'status_check.php'; //it takes $check from MySQL DB 
if($status = "0") { //if status is 0 go on 
    include 'status_1.php'; //set status to 1 
      ... 
    include 'status_0.php'; //after finished operation set status back to 0 
} else { //if status is 1 say that its 1 
    echo "MySQL DB is in use (status ". $status .")"; 
    die; 
} 
+6

Il vous manque un signe égal. – Jon

+0

'($ status ==" 0 ")' L'égalité, pas l'affectation! –

+0

Utilisez le signe "égal": 'if ($ status ==" 0 ")' –

Répondre

17

Vous attribuez, pas de comparaison.

if($status = "0") { 

Faites == pour une comparaison.

Il est donc faux car la chaîne "0" est traitée comme une valeur "falsifiée" en PHP. Docs: http://php.net/boolean#language.types.boolean.casting

+0

QQ omg noob me; D –

+1

Vous devriez probablement expliquer pourquoi '$ status =" 0 "' évalue aussi 'false'. – Jon

+0

@Jon Noté. Merci pour la suggestion. – Wiseguy

Questions connexes