webForumDet fria alternativet

Anropa mssql stored procedure i PHP?

10 svar · 509 visningar · startad av MissStorm

MissStormMedlem sedan jan. 20059 inlägg
#1

Hej!

Någon som kan hjälpa mig med hur jag anropar mina stored procedure i mssql med PHP?

Måste jag verkligen skriva en massa mssql_init och mssql_bind och så..? Eller hur gör man?!?

Jag hittade följande kod i ett tidigare inlägg här i forumet, men får det inte att fungera. Måste jag skriva något särskilt innan jag skriver det här?

<?
.....
.....
$AccountLO="myuser";
$PassowrdLO="mypass";

$result=mssql_query("strCheckUser ".$AccountLO.", ".$PasswordLO."");
//echo gettype($result);
$arr = mssql_fetch_assoc($result);
echo $arr["R"];
......
......
?>
Min kod nu:

openConn();
$result=mssql_query("spInlogg ".$aLog['anvandarnamn'].", ".$aLog['losenord']."");
$num=mssql_result($result,"anvandarnamn");

Felmeddelandet jag får:
Warning: mssql_query(): message: Could not find stored procedure 'spInlogg'. (severity 16)

/MissStorm

pimmeMedlem sedan sep. 20011 086 inlägg
#2

Har du en stored procedure som heter spInlogg då?

MissStormMedlem sedan jan. 20059 inlägg
#3

Jupp. Jag har en stored procedure som heter så...

/MissStorm

MissStormMedlem sedan jan. 20059 inlägg
#4

Jupp. Jag har en stored procedure som heter så...

/MissStorm

pimmeMedlem sedan sep. 20011 086 inlägg
#5

Okej. Efter att ha kollat i manualen (har aldrig använt php+mssql) så skulle jag vilja påstå att du måsta använda mssql_init, mssql_bind och mssql_execute för att anropa en stored procedure.

pimmeMedlem sedan sep. 20011 086 inlägg
#6

Kom att tänka på en sak. I Oracle måste man skriva execute SP, för att exekvera en stored procedure kallad SP. Det är inte något liknande i mssql?
$result=mssql_query("execute spInlogg ".$aLog['anvandarnamn'].", ".$aLog['losenord']."");

MissStormMedlem sedan jan. 20059 inlägg
#7

Tack för att du försöker hjälpa mig!

Har även testat:
$result=mssql_query("exec spInlogg ".$aLog['anvandarnamn'].", ".$aLog['losenord']."");
och
$result=mssql_query("execute spInlogg ".$aLog['anvandarnamn'].", ".$aLog['losenord']."");

och

$stmt=mssql_init("spInlogg", $connDb);
mssql_bind($stmt, "@anvandarnamn", &$aLog['anvandarnamn'], SQLVARCHAR, false);
mssql_bind($stmt, "@losenord", &$aLog['losenord'], SQLVARCHAR, false);
$result = mssql_execute($stmt);

Får inget att fungera! Meddelandet:"Could not find stored procedure 'spInlogg'" visas varje gång.

@ndersMedlem sedan juni 200032 969 inlägg
#8

I T-SQL behöver man inte ange execute eller exec när man ska exekvera en procedur. Dock måste strängvärden omges med apostrofer om datatypen kräver det.

Hur har du anslutit till databasservern? Har du angivit rätt databasnamn som defaultdatabas i din anslutning?

MissStormMedlem sedan jan. 20059 inlägg
#9

Jag ansluter så här:
$connDb = @mssql_connect($dataServer, $db_user, $db_pass) or die("Kunde inte ansluta");
$conn = @mssql_select_db($db, $connDb) or die("Kunde inte öppna database");

Har även provat utan @-tecknen...

Jag har även trippelkollat databasnamn. Och borde väl få ett fel redan när jag försöker ansluta annars..?

/MissStorm

MissStormMedlem sedan jan. 20059 inlägg
#10

Måste jag ansluta på ett annat sätt om jag anropar store procedures?

Nu funkar ju inget jag försöker med!!! Provade istället:
$query="SELECT * FROM tblAnvandare WHERE anvandarnamn='".$aLog['anvandarnamn']."' AND losenord='".$aLog['losenord']."'";
echo $query;
$result = mssql_query($query);

Fick då felmeddelandet:
Warning: mssql_query(): message: Invalid object name 'tblAnvandare'. (severity 16)

Vad kan vara fel?!?

/MissStorm

MissStormMedlem sedan jan. 20059 inlägg
#11

Äntligen löste det sig! Hade tydligen inte fått rätt rättigheter till tabellerna...

/MissStorm

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)