gpt4 book ai didi

PHP- SQLSRV_FETCH_ASSOC 和 sqlsrv_fetch_array 错误

转载 作者:搜寻专家 更新时间:2023-10-31 21:04:31 24 4
gpt4 key购买 nike

我使用此代码从 excel 中的 sql server 查询下载结果。连接和查询工作正常,我已经正确安装了 sqlsrv 扩展。但是我仍然遇到这样的错误

"Use of undefined constant SQLSRV_FETCH_ASSOC - assumed SQLSRV_FETCH_ASSOC'"
"Warning: sqlsrv_fetch_array() expects parameter 2 to be long"

我认为问题出在 SQLSRV_FETCH_ASSOC 上。任何帮助将不胜感激。

  function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

$serverName = "********";
$connectionInfo = array( "Database"=>"****", "UID"=>"***", "PWD"=>"*****");
$connect = sqlsrv_connect( $serverName, $connectionInfo);

// filename for download
$filename = "website_data_" . date('Ymd') . ".xls";

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");

$flag = false;
$query="select * from business_partners ORDER BY 1 desc";

$result = sqlsrv_query($connect, $query) or die('A error occured: ' . sqlsrv_errors());
while(false !== ($row = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)))
{
if(!$flag) {
// display field/column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}**strong text**
array_walk($row, 'cleanData');
echo implode("\t", array_values($row)) . "\r\n";
}
exit;

最佳答案

我无法解释为什么在明确加载扩展时不定义常量,但您应该能够通过自己定义来规避问题。

SQLSRV_FETCH_ASSOC has the value 2 , 所以你应该把它添加到某个地方,最好是在你总是包含的文件中:

if ( !defined( 'SQLSRV_FETCH_ASSOC' ) )
define( 'SQLSRV_FETCH_ASSOC', 2 );

if ( !defined() ) 子句可确保您的代码在实际问题得到解决并且常量突然重新出现时不会中断。

或者,如果您只在文件中使用它一次并且不值得定义常量(除了可读性),您可以只使用实际值作为参数:

$row = sqlsrv_fetch_array( $result, 2 ); // 2 = SQLSRV_FETCH_ASSOC

关于PHP- SQLSRV_FETCH_ASSOC 和 sqlsrv_fetch_array 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34918034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com