我無法通過PDO將參數傳遞給SQL Server上的存儲過程。使用PHP PDO將參數傳遞給SQL Server存儲過程
我可以成功地對不需要參數,像這樣簡化版本代碼的程序執行一個查詢:
$dbConnection = Craft::createComponent(array(
'charset' => 'utf8',
'class' => 'CDbConnection',
'autoConnect' => true,
));
$dbConnection->connectionString = 'sqlsrv:Server=MYSERVER;Database=My_Database';
$dbConnection->username = 'MyUsername';
$dbConnection->password = 'MyPasword';
$command = $dbConnection->createCommand(
'MYSERVER.My_Database.My_Schema.my_Stored_Procedure'
);
$data = $command->queryAll();
這將返回數據的罰款。
但是,如果存儲過程需要參數,我不能解決如何做到這一點。我嘗試過的東西,如更換createCommand
行:使用我一直在考慮這四個參數
$command = $dbConnection->createCommand(
"MYSERVER.My_Database.My_Schema.my_Stored_Procedure 1, 'A Parameter', '', ''"
);
,應該工作,但是這讓我:
CDbCommand failed to execute the SQL statement: SQLSTATE[IMSSP]: The active
result for the query contains no fields.. The SQL statement executed was:
MYSERVER.My_Database.My_Schema.my_Stored_Procedure 1, 'A Parameter', '', ''
我不熟悉使用SQL Server存儲過程的語法,不要介意從PHP調用它們,所以我有點難住。
你看到http://php.net/manual/ EN/pdo.prepared-statements.php? – JimmyB
是;我嘗試過綁定參數,但是我得到的錯誤信息與最後一部分相同,例如'執行的SQL語句是:MYSERVER.My_Database.My_Schema.my_Stored_Procedure ?, ?, ?,?' –