在将MySQLi代码迁移到SQLSRV时,fetch_assoc()和fetch()函数在语法和用法上有所不同。以下是一个示例解决方法,展示了如何使用SQLSRV的fetch()函数来模拟MySQLi的fetch_assoc()函数。
// 创建SQL Server连接
$serverName = "serverName\sqlexpress";
$connectionOptions = array(
"Database" => "dbName",
"Uid" => "username",
"PWD" => "password"
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
// 执行查询
$sql = "SELECT column1, column2 FROM tableName";
$stmt = sqlsrv_query($conn, $sql);
// 模拟fetch_assoc()函数
function fetch_assoc($stmt) {
$row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
return $row;
}
// 使用fetch_assoc()函数获取数据
while ($row = fetch_assoc($stmt)) {
echo $row['column1'] . ", " . $row['column2'] . "<br>";
}
// 关闭连接
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
在上面的示例中,我们首先创建SQL Server连接,然后执行查询。接下来,我们定义了一个自定义函数fetch_assoc(),它使用fetch_array()函数和SQLSRV_FETCH_ASSOC参数来模拟MySQLi的fetch_assoc()函数。最后,我们使用fetch_assoc()函数在while循环中获取数据,并打印出column1和column2的值。
请注意,上述代码仅是一个示例解决方法,实际应用中可能需要根据具体情况进行适当调整。