我的问题是关于一个可以与PHP连接的Oracle数据库。使用SQL Developer使用相同的查询,我得到了:
但是在PHP中:
$tsql= "select orden, fase, maquina_id, DescMaterial, dhsalida, scg_MaterialesLotes.lote, scg_MaterialesLotes.lotecli from scg_fases inner join scg_materiales on scg_fases.IdBoletin = scg_Materiales.IdBoletin inner join scg_MaterialesLotes on scg_Materiales.IdMatOf = scg_MaterialesLotes.IdMatOF";
$stmt = sqlsrv_query( $conn, $tsql);
if ( $stmt )
{
?>
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
$orden = $row["orden"];
$fase = $row["fase"];
$puesto = $row["maquina_id"];
$art = $row["CodMaterial"];
$desc = $row["DescMaterial"];
$fecha = $row["dhsalida"];
$lote = $row["scg_MaterialesLotes.lote"];
$loteCli = $row["scg_MaterialesLotes.lotecli"];
echo "<tr>";
echo "<td align=center>" . $orden . "</td>";
echo "<td align=center>" . $fase . "</td>";
echo "<td align=center>" . $puesto . "</td>";
echo "<td align=center>" . $art . "</td>";
echo "<td align=center>" . $desc . "</td>";
echo "<td align=center>" . $fecha . "</td>";
echo "<td align=center>" . $lote . "</td>";
echo "<td align=center>" . $loteCli . "</td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
<?php
}
else
{
echo "Submission unsuccessful.";
die( print_r( sqlsrv_errors(), true));
}
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
使用浏览器显示:
为什么我不能显示相同的信息?问题出在哪里?谢谢
答案 0 :(得分:1)
1)将CodMaterial
字段添加到查询中,您没有在查询中包含字段CodMaterial
,因此此行:
$art = $row["CodMaterial"];
什么都不做。因此,您可以将该字段添加到查询的较长字段列表中,也可以只使用SELECT * FROM...
来检索每个字段。
2)不要在查询结果行中使用tablename.columnname 。例如,当您查询scg_MaterialesLotes.lote
时,结果属性将称为lote
,因此,在您的PHP代码中包含以下内容:
$lote = $row["scg_MaterialesLotes.lote"];
使用此:
$lote = $row["lote"];
对scg_MaterialesLotes.lotecli
3)回声$fecha
作为字符串,此刻是类型为对象,而不是使用:
echo "<td align=center>" . $fecha . "</td>";
改为使用此:
echo "<td align=center>" . ($fecha ? $fecha->format("Y-m-d H:i:s") : ""). "</td>";