簡體   English   中英

使用PDO在php中使用Mac運行MS SQL Server存儲過程

[英]Running a MS SQL server stored procedure with a mac in php using PDO

我正在嘗試使用Mac上的php在ms sql服務器的實例中執行存儲過程。

我最近購買了Macbook Pro,但在實現此功能時似乎遇到了實際問題。

我現在已經建立了一個連接,我知道它正在工作,就像我更改密碼一樣,我收到消息:

"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[01002] Adaptive Server connection failed (severity 9)' in /Users/davidwhitwell/Sites/test/connect.php on line 6"

更正密碼不會給我錯誤。

我嘗試運行的腳本是:

    $sql = $pdo->prepare("CALL [finance].[get_all_company_names]");
    $sql->execute();
    $results = $sql->fetchAll();
    var_dump($results);

結果返回一個空數組。 我知道數據存在,並且正確的權限已執行該過程,因為我可以直接使用sql Server Management Studio執行此操作。

由於您提到即使使用簡單的選擇查詢也無法檢索任何數據,因此我建議向腳本中添加一些錯誤處理。

首先,我將向您的常規pdo對象添加一些異常處理。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

當查詢失敗時,這將引發異常。 然后將執行結果包裝在try / catch語句中

try {
  $sql = $pdo->prepare("CALL [finance].[get_all_company_names]");
  $sql->execute();
  $results = $sql->fetchAll();
  var_dump($results);
} catch (PDOException $e) {
  echo 'An error occurred: ' . $e->getMessage();
}

您創建的sql和pdo對象還具有一個稱為errorInfo的方法,該方法有時會顯示錯誤。

if($sql->execute()) {
  $results = $sql->fetchAll();
}
else {
  $error_info = $dbh->errorInfo();
  print_r($error_info);
}

一些好的資源包括這些頁面

編輯

我相信最終是使用EXEC調用MS SQL中的存儲過程

  $sql = $pdo->prepare("EXEC [finance].[get_all_company_names]");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM