테스팅 목적으로 내 사무실에서 localhost XAMPP 서버를 실행합니다. 나는 여행 중이고 랩톱에서 일부 작업을 끝내기로 결정 했으므로 내 랩톱에 새 버전의 XAMPP를 설치했는데 내 파일을 복사했는데 어떤 이유로 든 랩톱 버전에서 논스탑 오류가 발생합니다. 내 바탕 화면에 단일 가져와.비 객체에서 rollback() 멤버 함수 호출
큰 것들 중 하나는 내 사이트 중 하나에 대한 간단한 로그인 페이지입니다.
때마다 나는 다음과 같은 오류 얻을 시도하고 코드를 실행:
Call to a member function rollback() on a non-object
내 코드는 다음과 같습니다
<?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)
}
?>
는 내가 전에 말했듯이, 이것은 내 바탕 화면에 문제없이 실행 (및 다른 곳에서 사용하는 여러 라이브 사이트). H가 무슨 일을하고 있니?
참고 : 나는 내 PHP 파일의 서로 다른 구성 될 수있다 생각하지만 난
"echo $ e-> getMessage();"의 출력은 무엇입니까? 스크립트를 종료하기 전에 스크립트를 한 행 위로 이동해야 할 수도 있습니다. – JochenJung
@JochenJung - 출력이 없습니다. 위로 움직이면 아무것도하지 않습니다. 이 함수는 @ $ db-> rollback(); – JM4
확실한 위로 이동하면 메시지를 줄 수 있습니다. 시도해 봤어? 오류로 인해 try 블록이 실패합니다. $ db beeing이 정의되지 않았다면 (지금 보이는 오류 메시지)이 결과 일뿐입니다. 하지만 이제 $ e-> getMessage()가 표시되지 않고 스크립트가 전에 줄에서 끝나게됩니다. – JochenJung