我正在使用 PHP 在 SQLServer 2008 中存储数据。
数据类型为 nVarChar(Max)。
非常大的字符串可以正确发布和保存,但是当我 odbc_fetch_into 时,超过 4104 个字符的值会在数组中放置一个空值。
我可以选择 left([Note], 4104),它会返回左边的 4101 个字符,但是当我选择 left([Note], 4105) 时,它会将 null 放入数组中。
我需要对我的 PHP 数组做些什么来让它接受更大的值吗?或者也许单独获取字段?
$SQL = "SELECT left([Note],4104) FROM [myTable] WHERE [myKey] = myVariable"; //Works for all strings!
//$SQL = "SELECT [Note] FROM [myTable] WHERE [myKey] = myVariable"; //Works for strings <= 4104 characters
$row = array();
$stuff = array();
$prep = odbc_prepare($conn, $SQL);
$ret = @odbc_execute($prep);
while (odbc_fetch_into($prep,$row)) {
array_push($stuff,$row);
}
echo json_encode($stuff);
更新:我刚刚对 $stuff 做了一个 var_dump,发现它在字符 #4104 之后有很多垃圾。在 Firefox 中,有很多菱形/问号字符,以及 PHP 源代码的残余和之前返回的结果。