2016-03-07 44 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);