我无法从存储过程中获取记录。如果我从SQL Server运行,我会得到记录。如果我从.NET调用它,我会得到记录......但如果我从PHP调用它,我就不会得到记录。
我在CentOS 6上使用PHP 5.3.3。我使用的是mssql。所有其他SP都可以。
我试过
$provider = 1010;
$array = array();
$stmt2 = mssql_init("[dbo].[PORA_sp_GET_LetterGenerationRecords]");
mssql_bind($stmt2, "@ProviderID", $provider, SQLINT4);
$letters = mssql_execute($stmt2);
while($row = mssql_fetch_assoc($letters)){
$array[] = $row;
}
mssql_free_statement($stmt2);
echo '<pre>'; print_r($array); echo '</pre>';
我有
Array
(
)
我也试过了
$array = array();
$letters = mssql_query('EXEC [dbo].[PORA_sp_GET_LetterGenerationRecords] @ProviderID = 1010');
while($row = mssql_fetch_assoc($letters)){
$array[] = $row;
}
echo '<pre>'; print_r($array); echo '</pre>';
我得到了
Array
(
)
我包括
echo 'MSSQL error: '. mssql_get_last_message();
和答案:
MSSQL error:
我很好奇。现在我从PHP一步一步地运行SP。这是可耻的。
我试过了:
$provider = 1010;
$array = array();
// $letters = mssql_query('EXEC [dbo].[PORA_sp_GET_LetterGenerationRecords] @ProviderID = 1010');
$stmt2 = mssql_init("[dbo].[PORA_sp_GET_LetterGenerationRecords]");
mssql_bind($stmt2, "@ProviderID", $provider, SQLINT4);
$letters = mssql_execute($stmt2);
if($letters){
echo mssql_num_rows($letters);
while($row = mssql_fetch_assoc($letters)){
$array[] = $row;
}
mssql_free_statement($stmt2);
echo '<pre>'; print_r($array); echo '</pre>';
}
else{
echo 'MSSQL error: '. mssql_get_last_message();
echo error_get_last();
}
和同样的答案。
答案 0 :(得分:2)
您的代码看起来很好,但由于某种原因,sql语句正在终止。
所以你需要调试这个,我建议先尝试让它与硬编码参数一起使用:
try {
$array = array();
$result = mssql_query('EXEC [dbo].[PORA_sp_GET_LetterGenerationRecords] @ProviderID = 1010');
while ($row = mssql_fetch_assoc($result))
{
$array[] = $row;
}
var_dump($array);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
error_log($e->getMessage());// or log it to a txt file
echo 'MSSQL error: '. mssql_get_last_message();
echo 'Last error: '.error_get_last();
}
<小时/> 您还应该运行SQL事件探查器并对异常进行过滤以获得更好的想法。
答案 1 :(得分:0)
<?php
$query = "EXEC [dbo].[PORA_sp_GET_LetterGenerationRecords] @ProviderID = 1010";
$result = mssql_query($query);
if (!$result) {
die('Invalid query: ' . mssql_error());
}
while ($row = @mssql_fetch_assoc($result)) {
echo $row['col1']
}
?>