Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 没有从sqlsrv_num_行中获取任何内容_Php_Sql Server - Fatal编程技术网

Php 没有从sqlsrv_num_行中获取任何内容

Php 没有从sqlsrv_num_行中获取任何内容,php,sql-server,Php,Sql Server,我正在尝试通过php页面从MS SQL中提取数据。我已经获得了一个有效的连接,并且正在尝试从MyTable中进行简单的SELECT*,但是无论我做什么,sqlsrv_num_行都是空的 这是我的密码: function connect() { $serverName = DB_HOST; //serverName\instanceName $connectionInfo = array( "Database"=>DB_NAME, "UID"=>DB_USER

我正在尝试通过php页面从MS SQL中提取数据。我已经获得了一个有效的连接,并且正在尝试从MyTable中进行简单的SELECT*,但是无论我做什么,sqlsrv_num_行都是空的

这是我的密码:

    function connect() {

    $serverName = DB_HOST; //serverName\instanceName
    $connectionInfo = array( "Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD);
    $this->connection = sqlsrv_connect( $serverName, $connectionInfo);
    sqlsrv_connect( $serverName, $connectionInfo);


    if( $this->connection ) {
         echo "<br>Connection established.<br />";
    }else{
         echo "<br>Connection could not be established.<br />";
         die( print_r( sqlsrv_errors(), true));
    }       


}
函数连接(){
$serverName=DB\u HOST;//serverName\instanceName
$connectionInfo=array(“数据库”=>DB\u名称,“UID”=>DB\u用户,“PWD”=>DB\u密码);
$this->connection=sqlsrv\u connect($serverName,$connectionInfo);
sqlsrv_connect($serverName,$connectionInfo);
如果($this->connection){
echo“
已建立连接。
”; }否则{ echo“
无法建立连接。
”; 模具(打印错误(sqlsrv_errors(),true)); } }
已建立连接的回音正在工作,因此所有AOK都在那里

现在,当我执行一个简单的查询时:

    function query($sql) {
    if ($this->debug) {
        echo $sql . "<br />";
    }       
    $this->sql = $sql;
    $this->recordset = sqlsrv_query($this->connection, $sql);

    if (!$this->recordset) {
        die('<br><br>Invalid query :<br><br><bold>' . $this->sql . '</bold><br><br>' . sqlsrv_errors());
    }

    echo "<br>rows = " . sqlsrv_num_rows($this->recordset);
函数查询($sql){
如果($this->debug){
echo$sql。“
”; } $this->sql=$sql; $this->recordset=sqlsrv\u query($this->connection,$sql); 如果(!$this->记录集){ die('

无效查询:

'.$this->sql'

'.sqlsrv_errors()); } echo“
rows=“.sqlsrv\u num\u rows($this->recordset);
我完全没有从上面的回音中得到任何东西?有什么原因吗?或者你能建议一个新的回音,我可以试着调试它吗

我的DB类中的所有代码都是从mysql转换而来的,因此可能有一些错误正在造成损害

我甚至尝试过一个超级简单的版本,所有代码都在一起,但仍然是空白/错误的:

    $server = DB_HOST;
$conn = sqlsrv_connect( $server, array( "Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD) );
$stmt = sqlsrv_query( $conn, "SELECT * FROM MyTable");
$row_count = sqlsrv_num_rows($stmt);
echo "<br>row count = " . $row_count;
if ($row_count === false)
  echo "\nerror\n";
else if ($row_count >=0)
  echo "\n$row_count\n";
  die;
$server=DB\u主机;
$conn=sqlsrv_connect($server,array(“数据库”=>DB_名称,“UID”=>DB_用户,“PWD”=>DB_密码));
$stmt=sqlsrv_查询($conn,“从MyTable中选择*);
$row\u count=sqlsrv\u num\u行($stmt);
echo“
行计数=”.$row\u计数; if($row\u count==false) 回显“\n错误\n”; 如果($row\u count>=0),则为else 回显“\n$row\u count\n”; 死亡
试试这个

替换下面的语句

sqlsrv_query( $conn, "SELECT * FROM MyTable");
作为


我们可以看到$sql的内容吗?很抱歉,我现在已经修复了它,它需要$options添加到查询中:发布后立即找到答案!您需要在查询代码中使用此选项:$this->sql=$params=array();$options=array(“Scrollable”=>SQLSRV\u CURSOR\u KEYSET);$this->recordset=SQLSRV\u query($this->connection,$sql,$params,$options);“SQLSRV_CURSOR_键集允许您以任何顺序访问行。但是,如果从表中删除行(删除的行返回时没有值),则键集光标不会更新行数。键集是SQLSRV_CURSOR_键集的缩写形式。请随意发布您自己的答案;-)volkerk所说的,将其作为答案发布并接受,这样任何搜索的人都可以快速看到找到了解决方案。必须提供一些解释!这有助于更好地理解rader而不是复制粘贴。:)
sqlsrv_query( $conn, "SELECT * FROM MyTable", array(), array("Scrollable"=>"buffered"));