我在Oracle表中建立了一个配置为CLOB的列。该列的目的是包含最终用户输入的状态更新。
我使用以下代码通过PHP / OCI成功添加更新:
if (!empty($lastUpdate)) {
$stid5 = oci_parse($connect, "UPDATE service_status SET ss_update_details = '$lastUpdate' || ss_update_details WHERE ss_id = $tableID");
$r = oci_execute($stid5);
}
您注意我使用连接方法将更新添加到列中,因此列中可以存在许多更新。
当我在HTML页面中使用此PHP / OCI代码检索要查看的数据时......
$stid1 = oci_parse($connect, "SELECT * FROM service_status WHERE ss_id = $tableID");
$r = oci_execute($stid1);
while (($row = oci_fetch_array($stid1, OCI_BOTH+OCI_RETURN_LOBS))!= false)
{
echo '<h3>Last Update Time and Action Taken:</h3>
<p>'.$row['SS_UPDATE_DETAILS'].'</p>';
}
...结果捆绑在一起,条目之间没有回车符或换行符。我知道,这在视觉上并不令人满意......预期的行为。
我的问题是:如何在每个条目的末尾添加换行符/回车符,以便更多地阅读CLOB的内容&#34;用户友好&#34;?
我尝试将字母Z添加为&#34;虚拟&#34;我的UPDATE语句中的字符,就像这样......
UPDATE service_status SET ss_update_details = '$lastUpdate Z' || ss_update_details WHERE ss_id = $tableID"
...然后使用TRANSLATE ...
将其与修改后的SELECT语句耦合SELECT TRANSLATE(ss_update_details, 'Z', CHR(10)) FROM service_status WHERE ss_id = $tableID"
这导致没有返回任何行。我不确定我使用的oci_fetch_array是否对我的TRANSLATE尝试感到满意?
非常感谢您对此的任何帮助。
答案 0 :(得分:0)
如何连接CHR(10)?这是一个例子:
SQL> create table test (col clob);
Table created.
SQL>
SQL> insert into test (col) values
2 ('$lastUpdate on ' || to_char(sysdate, 'hh24:mi') || chr(10) ||
3 '- updated by ' || 'Littlefoot' || chr(10) ||
4 '- while anwering the question on StackOverflow' || chr(10) ||
5 'The End'
6 );
1 row created.
SQL> select * From test;
COL
--------------------------------------------------------------------------------
$lastUpdate on 18:34
- updated by Littlefoot
- while anwering the question on StackOverflow
The End
SQL>
答案 1 :(得分:0)
感谢@Littlefoot提供指导。为了看到我的CLOB记录显示在HTML页面上,其间有换行符,我将<br />
标记连接到每个要更新的记录,如下所示:
UPDATE service_status SET ss_update_details = '$lastUpdate' || '<br />' || ss_update_details WHERE ss_id = $tableID"