0
我嘗試插入一些數據與PHP和存儲過程。存儲過程正常工作,但僅適用於第一行。存儲過程中,只受影響只有第一行
PHP:
$sql = "SELECT * FROM [importliste_TCSv3]";
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
die (print_r(sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt)) {
// print works fine without call proc
$query = "{call difInport(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}";
$params = array("0gtp", $row["Kostenstelle"], $row["Vorname"], $row["Nachname"], $row["CI-Nummer"], $row["cmo_mon"], $row["Raum"], $row["Gebaeude"], $row["Bemerkung"], $row["Hardware"], $row["fmo_mon"], $row["Zubehoer"]);
$stmt = sqlsrv_query($conn, $query, $params);
if ($stmt === false) {
die (print_r(sqlsrv_errors(), true));
}
}
存儲過程:
ALTER proc [dbo].[difInport]
@mandant_id varchar(50),
@kostenstelle varchar(50),
@vorname varchar(50),
@nachname varchar(50),
@ci_nummer int,
@anzahl_monitore_old int,
@raum varchar(50),
@gebäude varchar(50),
@bemerkung text,
@hardware_typ varchar(50),
@anzahl_monitore_new varchar(50),
@zubehör text
as
BEGIN
SET NOCOUNT ON;
DECLARE
@latestPersonID int,
@latestCmoID int,
@latestFmoID int
INSERT INTO [RC.Persons] (kostenstelle, vorname, nachname) VALUES (@kostenstelle, @vorname, @nachname);
SET @latestPersonID = (SELECT SCOPE_IDENTITY())
INSERT INTO [RC.CMO] (ci_nummer, anzahl_monitore, raum, gebäude, bemerkung) values (@ci_nummer, @anzahl_monitore_old, @raum, @gebäude, @bemerkung);
SET @latestCmoID = (SELECT SCOPE_IDENTITY())
INSERT INTO [RC.FMO] (hardware_typ, anzahl_monitore, zubehör) values (@hardware_typ, @anzahl_monitore_new, @zubehör);
SET @latestFmoID = (SELECT SCOPE_IDENTITY())
INSERT INTO [RC.Persons_RC.CMO] (cmo_id, person_id) VALUES (@latestCmoID, @latestPersonID);
INSERT INTO [RC.Persons_RC.FMO] (fmo_id, person_id) VALUES (@latestFmoID, @latestPersonID);
INSERT INTO [RC.Persons_RC.Mandant] (person_id, mandant_id) VALUES (@latestPersonID, @mandant_id);
END
我讀了這個問題:Call mysql PROCEDURE inside while loop works only first time 但我不給任何結果集或者是一組聲明與選擇的結果問題?
熱鬧!你把我帶回來,沒有看到...... Thx男人! – mnlfischer