2016-03-07 40 views
-1

我在使用PDO在MSSQL數據庫上運行預備查詢時遇到問題。我可以連接到數據庫並運行沒有參數的SELECT查詢,但現在我試圖用一個參數:user來運行簡單的SELECT查詢。但是,代碼不會盡管肯定是有數據庫行與該值返回任何值,下面是我使用的代碼:PDO準備好的語句和MSSQL數據庫運行不正確

$db = new PDO('dblib:host='.$dbHost.';dbname='.$dbName.';charset=utf8mb4',$dbUser, $dbPass); 
$stmt = $db->prepare('SELECT * FROM customer WHERE email_address = :user '); 
$stmt->bindValue(":user", $_SESSION["username"], PDO::PARAM_STR); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
var_dump($result); 

我收不到任何後續代碼var_dump輸出。我知道,在數據庫中有一個正確的行,所以我嘗試:

$stmt = $db->prepare("SELECT * FROM customer WHERE email_address = '[email protected]'"); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
var_dump($result); 

然而返回仍然沒有價值。我在PDO中做錯了什麼?如果我將這個確切的查詢輸入到它運行的查詢欄中。

回答

1

您忘記了執行您的查詢。

的放慢參數結合之後,把這個代碼:

$stmt->execute(); 
0

好吧,我是個白癡。忘記執行查詢。修正後的代碼適用於處於同一困境中的人:

$db = new PDO('dblib:host='.$dbHost.';dbname='.$dbName.';charset=utf8mb4',$dbUser, $dbPass); 
$stmt = $db->prepare('SELECT * FROM customer WHERE email_address = :user '); 
$stmt->bindValue(":user", $_SESSION["username"], PDO::PARAM_STR); 
$stmt->execute(); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
var_dump($result);