PDA

View Full Version : سوال: ارساال پارامتر استور پروسیجر به sqlsrv_query



kolman
پنج شنبه 29 خرداد 1404, 14:44 عصر
سلام وقت بخیر
بنده یک استور پروسیجر دارم با نام FindProc با پارامتر Serial@
حالا میخوام ازش داخل php استفاده کنم
حالا سوال بنده اینه که چجوری میتونم از استور پروسیچر استفاده کنم و چجوری پارامتر را ارسال کنم؟

ممنون میشم جواب بدین چون فوق العاده فوری فوریه
این کد بنده هستش :
جاهایی که نیاز به اصلاح داره رو ممنون میشم بهم بگید که اصلاح کنم



function GetData($conn, $sqlStatement,$Serial)
{
$resultList=array();
$resultList=[];
$sql = $sqlStatement;
$stmt = sqlsrv_query($conn, $sql);
if ($stmt)
{
while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC))
{
array_push($resultList,$row);
}
return json_encode($resultList);
}
else
{
foreach( sqlsrv_errors() as $error )
{
echo "<div><strong class='bold-text'>وضعیت: </strong>".$error[ 'SQLSTATE']."</div>";
echo "<div><strong class='bold-text'>کد خطا: </strong>".$error[ 'code']."</div>";
echo "<div><strong class='bold-text'>پیغام خطا: </strong>".$error[ 'message']."</div>";
}; }}var_dump(GetData($conn,"{call FindProc }",'47440825399'));

mazoolagh
یک شنبه 01 تیر 1404, 10:33 صبح
سلام و روز خوش در نگاه اول چیزی که دیده میشه تناقض در کد هست:

توابع sqlsrv برای کار با MS SQL هست و نه MySQL،
ولی شما برای سدا زدن stored procedure از CALL استفاده کردین که در MySQL استفاده میشه
در حالی که برای MS SQL باید از EXEC استفاده کنین.

حالا اول باید اینو مشخص کنین که کدوم سناریو هست تا بتونم راهنمایی کنم.

مورد بعدی این هست که هم MS SQL و هم MySQL مستقیما خروجی JSON میدن
و اون لوپ while کلا نیازی بهش نیست.