【发布时间】:2015-09-23 16:55:26
【问题描述】:
我即将开始使用mssql 和php 构建网站。
不过,我计划使用 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)){}
当我有很多需要绑定的参数时,我的担心就出现了。管理它们的顺序并在查询参数之间来回跳动似乎并不理想。
所以我的问题; MSSQL 可以使用命名占位符吗?
【问题讨论】:
-
Sql server 没有 LIMIT 但使用 TOP
-
显示正在使用的连接/驱动程序
-
是mysqli不能有命名参数。 PDO 支持
?和:foo,这是有道理的,因为它是一个通用的“所有数据库”接口,而 mysqli(显然)是特定于 mysql 的。 -
@DrewPierce 我已经包含了我的连接字符串
-
好吧,看看我的回答底部
标签: php mysql sql-server sql-server-2005 pdo