J'ai changé certaines de mes anciennes requêtes en framework Mysqli pour améliorer les performances. Tout fonctionne correctement sur localhost mais quand je le télécharge sur le serveur web, il ne produit rien. Après la connexion je vérifie les erreurs et il n'y en a pas. J'ai également vérifié les modules php installés et mysqli est activé.La requête Mysqli ne fonctionne que sur localhost, et non sur webserver
Je suis certain qu'il crée une connexion à la base de données car aucune erreur n'est affichée. (Quand je l'ai changé la chaîne de nom de la base, il a donné l'erreur)
Il n'y a pas de sortie de la requête sur le serveur web, qui ressemble à ceci:
$mysqli = new mysqli("server", "user", "password");
if (mysqli_connect_errno()) {
printf("Can't connect Errorcode: %s\n", mysqli_connect_error());
exit;
}
// Query used
$query = "SELECT name FROM users WHERE id = ?";
if ($stmt = $mysqli->prepare("$query"))
{
// Specify parameters to replace '?'
$stmt->bind_param("d", $id);
$stmt->execute();
// bind variables to prepared statement
$stmt->bind_result($_userName);
while ($stmt->fetch())
{
echo $_userName;
}
$stmt->close();
}
}
//close connection
$mysqli->close();
Comme je l'ai dit ce code fonctionne parfaitement sur mon localserver juste pas en ligne. Vérifié les journaux d'erreurs et il n'y a rien, donc tout indique une bonne connexion. Toutes les tables existent aussi etc ... N'importe qui a des idées parce que celui-ci m'a coincé! Aussi, si je fais fonctionner cela, toutes mes autres requêtes fonctionneront-elles encore? Ou devrais-je les obliger à utiliser le framework mysqli? Merci d'avance.
EDIT:
Ok Ive fait quelques 'débogage' pour voir ce qui se passe. Il y a des données dans la table que j'interroge qui correspond à la requête. Je l'ai fait comme suit pour vérifier l'instruction de préparation:
echo "debug 1";
if ($stmt = $mysqli->prepare("$shiftQuery"))
{
echo "debug 2";
printf("Error: %s.\n", $stmt->error);
etc...
}
Donc, fondamentalement, il doit envoyer debug 1 'avant la statment est préparé (ce qu'il fait). Puis après il devrait sortir 'debug 2' et toutes les erreurs qui se sont produites.
Le problème est ici quelque part car il n'atteint pas la ligne de débogage 2 dans l'instruction IF. Puisque les détails de connexion sont bien, je ne peux pas vraiment voir pourquoi l'objet $ mysqli ne serait pas créé. Cela donne à quelqu'un d'autres idées ???
merci
Où sélectionnez-vous la base de données? C'est soit le quatrième paramètre du constructeur, soit un appel à mysqli :: select_db. – VolkerK
Eh bien, vous frappez le clou sur la tête VolkerK. J'utilisais les trois paramètres de connexion de l'ancien mode de connexion.Celui que j'ai téléchargé ne sélectionnait pas la base de données, mais sur le serveur local, il était sélectionné à partir d'un appel vers un autre script de connexion. Merci à tous pour vos commentaires, ils sont les bienvenus. – whamo