我的查询结果很奇怪。
<?
include('conf/conector.php');
echo "start";
$connSQL = mssql_connect($AconnSQL[$CONF_connSQL_default][1], $AconnSQL[$CONF_connSQL_default][2], $AconnSQL[$CONF_connSQL_default][3]);
mssql_select_db($AconnSQL[$CONF_connSQL_default][4],$connSQL);
$result = mssql_query("SELECT TOP 300 coditm, descripcion, codsbr FROM items WITH(NOLOCK) WHERE itemprefi='B' AND descripcion != '' AND descripcion IS NOT NULL");
echo "<br>rows: ".mssql_num_rows($result).'<br>';
mssql_free_result($result);
mssql_close($connSQL);
echo "end";
include('../includes/funciones/conector_by.php');
?>
上面的代码打印“rows:300”。这是因为“TOP 300”。
但如果我跑(使用相同的代码):
SELECT coditm, descripcion, codsbr
FROM items WITH(NOLOCK)
WHERE itemprefi='B' AND descripcion != '' AND descripcion IS NOT NULL
打印“rows:272”(如果我使用mssql_fetch_array执行'while',我也会得到272行。)
如果我把“TOP 500”我也得到了272行。
这只是疯了但它变得更加疯狂......
如果我跑:
SELECT count(*) as test
FROM items WITH(NOLOCK)
WHERE itemprefi='B' AND descripcion != '' AND descripcion IS NOT NULL
测试列是1936年(这是实际的行数)。
我完全糊涂了,我不知道在哪里搜索错误。我一直在使用mssql_ *很长一段时间(在同一台服务器上),我从来没有遇到这样的问题。它只发生在这张桌子上。