Je lance un serveur XAMPP localhost à mon bureau à des fins de test. Je voyage et j'ai décidé de faire un peu de travail sur mon ordinateur portable alors j'ai installé une nouvelle version de XAMPP sur mon ordinateur portable, copié mes fichiers mais pour une raison quelconque, je reçois des erreurs non-stop sur ma version portable. t obtenir un seul sur mon bureau.Appel à une fonction membre rollback() sur un non-objet
L'une des plus importantes est une simple page de connexion pour l'un de mes sites.
chaque fois que je et exécuter le code, je reçois l'erreur suivante:
Call to a member function rollback() on a non-object
Mon code est:
<?php
session_start();
if($_SERVER['SERVER_PORT'] == 80) {
header('Location:https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]);
die();
}
try
{
$db = new PDO('mysql:host=localhost;dbname=DB', 'USER', 'PW');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$sql = $db->prepare("SELECT user, pw FROM table WHERE user=? AND pw=?");
$sql->execute(array($_POST['user'], $_POST['pw']));
$foundrows = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
$rows = $sql->fetchAll();
foreach($rows as $row) {
$username = $row[0];
$pw = $row[1];
}
$db->commit();
$db->NULL;
}
catch (PDOException $e)
{
$db->rollback();
echo $e->getMessage();
exit;
}
if ($foundrows == 1) {
(store stuff and exit to Page A)
} else {
(create error and return to login page)
}
?>
Comme je l'ai dit avant, cela va sans problème sur mon bureau (et plusieurs sites en direct que j'utilise ailleurs). Qu'est-ce que le H se passe?
Note: Je pensais que ce peut être différentes configurations de mon fichier PHP, mais je copié le fichier php.ini de mon bureau et toujours pas de chance ...
Quelle est la sortie de "echo $ e-> getMessage();"? Peut-être que vous devez le déplacer d'une ligne vers le haut l'obtenir, avant que le script se termine. – JochenJung
@JochenJung - il n'y a pas de sortie, aussi, en remontant ne ferait rien. la fonction provoque un problème @ $ db-> rollback(); – JM4
Sure en remontant, pourrait vous donner un autre message. As-tu essayé? Pour les échecs du bloc try en raison de votre erreur. $ db n'est pas défini (le message d'erreur que vous voyez maintenant) n'est que le résultat de ceci. Mais maintenant, vous ne verrez pas le $ e-> getMessage(), car le script se termine dans la ligne précédente. – JochenJung