PHP + MSSQL 使用命名参数不是 '?' 的 PDO

标签 php mysql sql-server sql-server-2005 pdo

我即将开始使用 mssqlphp 构建网站。

但是,我打算使用 PDO,因为我目前认为它不可能使用命名参数。

目前在 MySQL 中,我会在查询中使用命名占位符;

$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT *
        FROM table
        LIMIT :numRows";

$st = $this->conn->prepare( $sql );
$st->bindValue( ":numRows", $numRows, PDO::PARAM_INT );

但是当使用 MSSQL 时;

$conn = new PDO("mysql:host=" . DB_HOST .";dbname=" . DB_NAME, DB_USER, DB_PASSWORD);

$sSQLInsert = "SELECT TOP ? *
    FROM table";

$aParams = array($iLimit);

$st = sqlsrv_query($dbhandle, $sSQLInsert, $aParams)){}

当我有很多参数需要绑定(bind)时,我的担心就出现了。管理它们的顺序并在查询参数之间来回切换似乎并不理想。

所以我的问题;是否可以在 MSSQL 中使用命名占位符?

最佳答案

这将是一个用于编写支票的简单脚本,但是我找到了文档和示例!答案是肯定的!名称参数适用于 PDO_MSSQL。

https://msdn.microsoft.com/en-us/library/ff628166(v=sql.105).aspx

$stmt = null;
$contact = "Sales Agent";
$stmt = $conn->prepare("select * from Person.ContactType where name = :contact");
$stmt->bindParam(':contact', $contact);
$contact = "Owner";
$stmt->execute();

关于PHP + MSSQL 使用命名参数不是 '?' 的 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31247631/

相关文章:

mysql - 如何对多个列进行排名?

asp.net - 使用 "IN"SQL 函数中的值将逗号分隔值从 .NET 传递到存储过程

sql-server - 为什么 FOR 触发器不在操作之前运行?

php - 从两个不同的数据库查询中查找两个计数列之间的差异并在 PHP 中显示结果

php - 选择 3 件销量较高的商品

javascript - 日期选择器定位无法正常工作

php - 在 php 上展开一个 URL 列表

php - MySQL 触发器会比 php 更快地检查 20 多行吗?

sql - 怀疑有人正在从我的 SQL Server '05 数据库中删除记录 - 有什么方法可以检查吗?

php - 是否可以使用 ArrayHelper 获取随机值? Yii2