我試圖通過php腳本查詢DB2數據庫。php函數db2_exec未運行特定的DB2查詢
if ($conn) {
$stmt = db2_prepare($conn, $sql);
if ($stmt) {
$success = db2_execute($stmt);
if (!$success) {
$result[]= "exec errormsg1: " .db2_stmt_errormsg($stmt);
echo implode(' ',$result);
$message = implode(' ',$result); ?>
<script>
window.alert(' <?php echo $message; ?>');
</script>
<?php
}
else
{
while ($row = db2_fetch_both($stmt))
{
if ($format == "human"){
$result[] = implode(" ", $row);
} else {
$result[] = implode(",", $row);
}
}
我遇到了使用db2_exec或db2_execute運行的某些查詢的問題。
我是有代碼的問題上面的元數據類型的查詢,但並找到了一些解決方法,例如像如果我的SQL硬編碼爲
$query = "describe table schemaID.tablename";
我需要在
包裹它來修改它$sql = "call SYSPROC.ADMIN_CMD('".$query."')";
因此而適用於描述功能我留下抓我的頭在如何處理這些類型的命令一樣
list tables for schema schemaID
辦個
這
EXEC errormsg1錯誤:[IBM] [CLI驅動程序] [DB2/AIX64] SQL0104N意外的標記 「表」 之後發現 「列表」。預期的標記可能包括:「JOIN」。 SQLSTATE = 42601
或
get db cfg
這
錯誤EXEC errormsg1:[IBM] [CLI驅動程序] [DB2/AIX64] SQL0104N意外的標記 「DB」 被發現在「GET」之後。預期的令牌可能包括:「STMM」。 SQLSTATE = 42601
從錯誤消息我看它有一個分隔符的問題,但我不確定爲什麼,因爲我可以讓其他查詢正常工作。
此外,如果我試圖通過命令行運行這些命令,它們都將正常工作,沒有任何問題。
有什麼我失蹤了關於如何在PHP中正確查詢DB2?理想情況下,我希望能夠完全按照我從命令行運行相同的查詢,而不是面對這些問題
謝謝你,我不知道SQL和CLP語句之間的區別。出於某種原因,我只是假設db2_exec會模仿db2命令行! – segaps
請標記爲答案 –