에 있습니다. 프로그래밍에 약간 익숙하지만 SQLSRV를 사용하여 PHP에서 쿼리가 있지만 Excel로 내보낼 때 오류가 발생합니다.경고 : sqlsrv_num_rows()는 매개 변수 1이 리소스가 될 것으로 예상하고, 부울은
경고 : sqlsrv_num_rows은() 매개 변수 (1) 자원이 될 것으로 예상, 부울이 코드입니다
에 주어진 SQL 쿼리 자체가 SQL 서버에서 실행하지만 여기에 엑셀이 나에게 그 오류를 제공, 인터넷 검색 및 검색을 할 수 있지만 답변을 찾을 수없는 경우 코드는 다음과 같습니다.
<?php
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Movimientos Cancelados del Mes.xls"');
header('Cache-Control: max-age=0');
$server = "server";
$info = array("Database"=>"DB","UID"=>"USR","PWD"=>"");
$conn = sqlsrv_connect($server, $info);
$param = array('ReturnDatesAsStrings'=> true);
$opt = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$per = $_GET["periodo"];
$eje = $_GET["ejercicio"];
$mov = 'Movimiento';
$est = 'Estatus';
$cli = 'Cliente';
$rfc = 'RFC';
$tot = 'Total';
$fec = 'Fecha Timbrado';
$uuid = 'UUID';
$cert = 'Certificado SAT';
$sql = "select v.MovID as '$mov',v.Estatus as '$est',v.Cliente as '$cli',cte.rfc as '$rfc',(v.Importe+v.Impuestos)as '$tot', c.FechaTmibrado as '$fec', c.UUID as '$uuid',c.noCertificadoSAT as '$cert'
from Venta V join CFD c on v.MovID = c.MovID join cte on v.cliente = cte.cliente
where V.Estatus = 'Cancelado' and c.Periodo = '$per' and c.Ejercicio = '$eje' and c.Empresa = 'MGJ'
order by FechaEmision";
$query = sqlsrv_query($conn, $sql);
$campos = sqlsrv_num_rows($query);
$i = 0;
echo "<table border=''><tr>";
echo "<th>$mov</th>";
echo "<th>$est</th>";
echo "<th>$cli</th>";
echo "<th>$rfc</th>";
echo "<th>$tot</th>";
echo "<th>$uuid</th>";
echo "<th>$cert</th>";
while ($i<$campos) {
echo "<td>".sqlsrv_get_field($query,$i);
echo "</td>";
$i++;
}
echo "</tr>";
while($row=sqlsrv_fetch_array($query)){
echo "<tr>";
for ($j=0; $j < $campos; $j++) {
echo "<td>".$row[$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
sqlsrv_close($conn);
print_r(sqlsrv_errors(),true);
?>
사용할 수 있습니다 참조하십시오. 엑셀이 이것과 관련이 있다는 점도 분명하지 않다. 엑셀에는 PHP를 실행할 수있는 드라이버가 있는가? SQL 인젝션에 대해서도 열려 있습니다. – chris85
또한이 오류에 대한 줄 번호를 제공합니다. 코드의 어느 부분에 오류가 있는지에 대한 단서를 알려주시겠습니까? 우리가 머리에서 수동으로 컴파일 할 때까지 살펴 보겠습니다. – RiggsFolly
http://php.net/manual/en을 읽으십시오. /function.sqlsrv-query.php 당신이 쿼리를 실행하고있을 때 실패했다는 것은 $ query가 FALSE임을 의미합니다; 리소스 대신 bool을 전달하려고하면 오류가 발생합니다. 대신 PDO를 사용하는 것이 좋습니다. – Rawrskyes