2010-02-12 3 views
0

Environnement 1: travail PHP (5.2.4) MySQL (5.1.30)
Environnement 2: Non travail PHP (5.2.6) MySQL (4.1.25-log)fonction se comporte différemment dans des environnements diff

Qu'est-ce que cette fonction fait fonctionner dans l'environnement 1, et pas dans l'environnement 2? Pas d'erreurs, juste ne rien retourner.

function GetPrice($type, $level){ 
    $result = mysql_query("SELECT * FROM `types` WHERE id = '$type'") or trigger_error(mysql_error()); 
    while($row = mysql_fetch_array($result)){ 
     foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
      $reg = $row['regprice']; 
      $nat = $row['natprice']; 
    } 

    if($level == "reg"){return $reg;} 
    if($level == "nat"){return $nat;} 

} 

je me dis que cela a quelque chose à voir avec la fin là où im comparant $level aux cordes, mais je ne sais pas ce qu'il devrait être de travailler.

+0

Votre style de codage idiosyncratique et incohérent n'aide pas beaucoup à comprendre ce que vous voulez que le code fasse. Vous attendez-vous à ce qu'une seule ligne soit renvoyée ou souhaitez-vous utiliser uniquement la dernière ligne renvoyée? Essayez de répercuter certains des résultats de la requête pour voir s'ils correspondent à vos attentes. – GZipp

Répondre

1

Vous exécutez une commande SELECT sans clause ORDER BY. Vous ne pouvez donc pas vous attendre à un ordre déterministe des lignes renvoyées.

En pratique, il est très difficile de faire une application de travail contre différentes versions de MySQL; 4.1 est très vieux, envisager de mettre à jour dès que possible.

La prise en charge de différentes versions de PHP est encore plus difficile (elles font souvent des changements incompatibles).

Je suppose que vous croyez que ces deux environnements ont des données identiques. Construisez un scénario de test qui démontre, avec des données connues, quelle sortie vous attendez et quelle sortie vous obtenez. Postez que les gens pourraient alors dire ce que vous essayez de faire.

Questions connexes