передать параметры Database Mail в хранимую prcedure, используя php и sql server 2008 - PullRequest
0 голосов
/ 12 ноября 2011

Я хочу использовать почту базы данных для своего приложения, а это значит, что мне нужно передать параметры в хранимую процедуру sp_send_dbmail У меня есть следующий код только для тестирования. Однако я хочу знать, как передать параметры в хранимую процедуру, используя ssql server 2008 и php. К вашему сведению я использую драйвер sqlsrv от Microsoft

<?php require_once ('../Connection/connmail.php')?> 
<?php
 $sql = "{CALL sp_send_dbmail[[@profile_name='gmailsmtp']]}";//my stored procedure

    $stmt = sqlsrv_query($conn,$sql)or die(print_r(sqlsrv_errors(),true));    


 ?> 

Приведенный выше код выдает ошибку

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near '{'. [message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near '{'. ) [1] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 105 [code] => 105 [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Unclosed quotation mark after the character string '[@profile_name='gmailsmtp']}'. [message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Unclosed quotation mark after the character string '[@profile_name='gmailsmtp']}'. ) ) 

Любая помощь будет оценена

1 Ответ

0 голосов
/ 31 мая 2012

Я видел, что это было без ответа некоторое время, так что вот решение.Сделайте вашего пользователя databasemailuserrole в системной базе данных msdb

$callmailproc = "EXEC msdb.dbo.sp_send_dbmail @profile_name = ?, @recipients=?, @subject=?, @body=?";
$profilename = 'DatabaseMail';
$recipients = 'recipient@domain.com';
$subject='Test Message';
$body = 'This is the body';
$params = array( 
                 array($profilename, SQLSRV_PARAM_IN),
                 array($recipients, SQLSRV_PARAM_IN),
                 array($subject, SQLSRV_PARAM_IN),
                 array($body, SQLSRV_PARAM_IN),
                 );

/* Execute the query. */
$stmt3 = sqlsrv_query( $conn, $callmailproc, $params);
if( $stmt3 === false )
{
     echo "Error in executing statement 3.\n";
     die( print_r( sqlsrv_errors(), true));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...