在使用SOAP和PHP时,我遇到了一些奇怪的问题。 相同的函数适用于小数据,但是当我的查询返回超过X行时,它会导致异常“Uncaught SoapFault异常:[Client]看起来我们没有XML文档”。
这是我的代码:
<?php
$cliente = new SoapClient(null, array('location' => $myserver,'uri' => 'urn:webservices'));
?>
<select id="actividad" name="actividad" size="1" style="height:40px; width: 100%;">
<?php
$acs = $cliente->get_actividades();
foreach($acs as $actividad) {
echo "<option value='".$actividad['idactividad']."'>".$actividad['descripcion']."</option>";
}
?>
</select>
这是服务器端:
public function get_actividades()
{
$link = new mysqli($this->dbhost,$this->dbuser,$this->dbpass,$this->dbname);
if (mysqli_connect_errno()) {
return 0;
}
$query = "SELECT idactividad, codigo, descripcion FROM actividades";
$datos = array();
if ($stmt = $link->prepare($query)) {
$stmt->execute();
$stmt->store_result();
$datos = $this->fetcharray($stmt);
$stmt->free_result();
$stmt->close();
return $datos;
} else {
return -1;
}
}
该查询导致大约37行。如果我在1到21行之间的查询中添加一个“LIMIT”子句,它可以正常工作,但不止于此会导致no-xml异常。
可能是一些内存问题?谁能解决它?
答案 0 :(得分:0)
不是像你那样返回一个值,而是必须回应它。例如,如果您回显$datos
,它仍然无效,因为您需要显示符合SOAP的XML文档。您需要处理该行数组以将它们转换为XML文档。
答案 1 :(得分:0)
字节顺序标记(BOM)与php标记之前的空格具有相同的效果。在这里,您可以找到用于检测和删除BOM的PHP代码段。务必将编辑器配置为不再插入BOM。