PDO预准备语句和MSSQL数据库无法正常工作


PDO Prepared Statements and MSSQL databases not functioning correctly

我在使用 PDO 在 MSSQL 数据库上运行准备好的查询时遇到问题。我可以连接到数据库并在没有参数的情况下运行 SELECT 查询,但现在我尝试使用一个参数 :user 运行一个简单的 SELECT 查询。但是,代码不返回任何值,尽管肯定有一个包含该值的数据库行。这是我使用的代码:

$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 = 'the@email.com'");
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);

但仍然没有返回任何值。我在PDO上做错了什么吗?如果我在查询栏中键入此确切查询,它将运行。

你忘了执行查询。

在参数绑定之后,输入以下代码:

$stmt->execute();

好吧,我是个白痴。忘记执行查询。针对处于相同困境的人的修订代码:

$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);