У меня есть следующий класс:Как вызвать переменную PDO внутри метода класса?
<?php
require_once($_SERVER['DOCUMENT_ROOT']. '/wp-content/themes/quest/wahoo/common.php');
class TestingClass
{
private function InsertUser()
{
$query = "EXEC dbo.InsertUser @Title = @sTitle, -- varchar(50)
@FirstName = @sFirstName, -- varchar(100)
@MiddleName = @sMiddleName, -- varchar(100)
@LastName = @sLastName, -- varchar(100)
@Gender = @sGender, -- varchar(20)
@DOB = @sDOB, -- datetime
@Email = @sEmail, -- varchar(200)
@Phone = @sPhone, -- varchar(50)
@Mobile = @sMobile, -- varchar(50)
@HomeAddress = @sHomeAddress, -- varchar(100)
@HomePostCode = @sHomePostCode, -- varchar(10)
@HomeSuburb = @sHomeSuburb, -- varchar(50)
@HomeState = @sHomeState, -- varchar(20)
@HomeCountry = @sHomeCountry, -- varchar(200)
@BrowserDetails = @sBrowserDetails, -- varchar(500)
@IsActive = @sIsActive, -- bit
@Password = @sPassword, -- varchar(500)
@Salt = @sSalt, -- varchar(50)
@LastLogin = GETDATE(), -- datetime
@CompanyID = @sCompanyId, -- int
@Created = GETDATE(), -- datetime
@CreatedBy = user, -- varchar(50)
@LastModified = NULL, -- datetime
@LastModifiedBy = NULL, -- varchar(50)
@UserName = @sUserName, -- varchar(50)
@UserRole = 'user' -- varchar(30)";
$query_params = array(
':username' => $_POST['username']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
// Note: On a production website, you should not output $ex->getMessage().
// It may provide an attacker with helpful information about your code.
die("Failed to run query: " . $ex->getMessage());
}
// display json encode on the page for AJAX to read
echo json_encode($result);
}
}
?>
Что с этой линии:
$stmt = $db->prepare($query);
Я пытаюсь использовать следующую переменную PDO из моего общего файла:
$db = new PDO ("sqlsrv:server = tcp:$host; Database = $dbname", "$username", "$password");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
I может сделать это просто отлично за пределами класса, но как только я буду внутри метода класса и попытаюсь использовать $ db, мне говорят, что переменная не определена. Есть ли способ, я все еще могу сделать это, не прибегая к использованию глобальной переменной (тем более, что я хочу переместить мой общий файл за пределами wwwroot)?
Закрыть, однако я получаю сообщение об ошибке: Catchable фатальная ошибка: Объект класса PDO не может быть преобразован в строку в C: \ DWASFiles \ сайтов \ junglegym \ VirtualDirectory0 \ site \ wwwroot \ wp-content \ plugins \ qcore \ qcore_waitress.php в строке 38 – Codingo
Просьба предоставить некоторый код, так как я тестировал это, и он работал. Заполните строку соединения в PDO ('') и попробуйте запрос типа $ db = $ this-> db; $ stmt = $ db-> подготовить ('SELECT * FROM tablename'); $ stmt-> execute(); var_dump ($ stmt-> fetchAll()); – NLZ