ugrás a tartalomhoz

nem tér vissza TRUE-val

aspirany · 2008. Aug. 27. (Sze), 09.04
Sziasztok

van egy php kódom ami meghív egy procedurát ami egy INSERT műveletet végez el.Azon a táblán ahol ezt végzi nincs autoincrement oszlop.

$sql = "CALL sp_szerzodes_rogzit('$_SESSION[projektkod]','0','0','$_SESSION[partnerID]','$_SESSION[Username]','$_SESSION[userID]')";
  $result = mysqli_query($link,$sql);
  if($result !== TRUE)
  {
   $call++;
  }else{
commit....}


ez a művelet nem tér vissza TRUE-val

köszönöm a segítséget
 
1

a teljes kód

aspirany · 2008. Aug. 27. (Sze), 09.08
$call = "0";
  $sql = "CALL sp_szerzodes_rogzit('$_SESSION[projektkod]','0','0','$_SESSION[partnerID]','$_SESSION[Username]','$_SESSION[userID]')";
  $result = mysqli_query($link,$sql);
  if($result !== TRUE)
  {
   $call++;
  }else{          
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
     {
      $kod_elso = $row['kod_elso'];
 $projektID = sprintf("%03d",$row['projektID']);
 $partnerID = sprintf("%03d",$row['partnerID']);
 $szerzodesID = sprintf("%07d",$row['szerzodesID']);
 $ID = $row['szerzodesID'];//az updatehez kell nullák nélkül
     }
$sorszam = $kod_elso.$projektID.$partnerID.$szerzodesID;
   }

$sql = "UPDATE szerzodes SET sorszam='$sorszam',statusz='üres',modosito='$_SESSION[Username]',modositas=NOW() WHERE szerzodesID='$ID' AND partnerID = '$_SESSION[partnerID]'";  
$result1 = mysqli_query($link,$sql);
    if($result1 !== TRUE)
     $call++;
//echo $call;
if($call >0)
    {
mysqli_rollback($link);
echo "<script>alert('a muvelet nem került végrehajtásra! ROLLBACK');</script>";
    }
else{
mysqli_commit($link);
mysqli_close($link);
   }
}
2

próba

atlanta · 2008. Aug. 27. (Sze), 09.12
Hali!
Figy szerintem elsősorban nézd meg az $sql-t, h milyen értéket ad vissza...
Ha az jó akkor passz... mert működnie kéne....

$result !== TRUE <-- ezt biztos h így szeretted volna? nem pedig != ?
3

müködött

aspirany · 2008. Aug. 27. (Sze), 09.28
igy is működött !==TRUE csak át kellett írnom a kódot egy picit, inkább a tárolt eljárásba piszkáltam

CREATE DEFINER = 'root'@'localhost' PROCEDURE `sp_szerzodes_rogzit`(IN projektID INTEGER(3), IN pszerzodoID INTEGER(11), IN pbiztositottID INTEGER(11), IN ppartnerID INTEGER(3), IN pletrehozo VARCHAR(20), IN pugynokID INTEGER(11))
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
DECLARE kod_elso INT DEFAULT 8;
DECLARE pmax INT;

SELECT MAX(szerzodesID) FROM szerzodes WHERE partnerID = ppartnerID INTO pmax;

IF ISNULL(pmax) THEN
 SET pmax = 1;
ELSE
 SET pmax = pmax+1;
END IF;

INSERT INTO szerzodes
(szerzodesID,kod_elso,projektID,szerzodoID,biztositottID,partnerID,letrehozo,ugynokID)
 VALUE (pmax,kod_elso,projektID,pszerzodoID,pbiztositottID,ppartnerID,pletrehozo,pugynokID);

SELECT szerzodesID,kod_elso,projektID,partnerID
FROM szerzodes
WHERE partnerID = ppartnerID
GROUP BY szerzodesID DESC LIMIT 1;
END;


lehet hogy a SELECT kavar be a az eljárásban.

a másik gondom ha mindent kiveszek és meghagyom a commit-ot nincs commit, ill ha minden bent van és nincs TRUE vagy false ellenőrzés a második SQL le sem fut