|
|
|
|
Salut,
J'ai un petit problème:
J'ai une application qui tourne en php sur base MySQL.
Lorsque je migre la base sur MSSQL, tout marche très bien, sauf sur quelques pages, où j'ai un message du genre :
Fatal error: Call to a member function on a non-object in c:\inetpub\wwwroot\... on line 135
C'est surtout que ce ne sont pas les mêmes fonctions...
|
Salut,
Fatal error: Call to a member function on a non-object in c:\inetpub\wwwroot\... on line 135 En gros tu es en train d'appeler une methode sur une variable qui n'est pas un objet. C'est à dire que tu dois avoir à la ligne 135 un truc du style: $bidule->methode() Mais le soucis c'est que $bidule n'est pas un objet. Alors si ça marchait avec mysql et pas mssql, c'est peut être parce que l'objet $bidule était l'instance d'une classe qui faisait appel à un truc qui marchait bien avec mysql et pas bien avec mssql. Il faudrait voir avec ton script... Vu que cette page à l'air d'être longue essaie de nous mettre le code php dans un fichier texte sur une page web ou autre (avec le code de la classe à laquelle fait référence $bidule).... |
Salut Kilian,
|
Yes, c'est ce que j'ai fait et.... j'ai trouvé !
// Fonction qui construit la fonction sql IF
function sql_if_function($condition, $value, $value_else) {
global $type_base;
if ($type_base == "mssql" || $type_base == "odbc_mssql") {
return "CASE WHEN $condition THEN $value ELSE $value_else END";
} else {
return "IF($condition,$value,$value_else)";
}
}
Il suffit d'appeler la fonction dans le select, genre SELECT sql_if_function(numéro=1, 'ok', 'ko') FROM table WHERE condition Voili voilà. Merci à toi Kilian qui m'a mis sur la voie ! |