webForumDet fria alternativet

mysqli, flera insert, olika tabeller

PHP

1 svar · 482 visningar · startad av noshornin

Medlem sedan aug. 2008815 inlägg
Frågan#1

Jag har kollat runt på google men jag förstår inte riktigt hur man ska göra det här.

Jag vill lägga in olika rader i 3 olika tabeller. I tabell1 och tabell2 vill jag lägga till en rad och i tabell3 vill jag lägga till tre rader. Typ såhär tänkte jag:

$mysqli = new mysqli([...]); 
sql = "INSERT INTO tabell1 (?, 
	?, 
	?) 
VALUES(?, 
	?, 
	?);
INSERT INTO tabell2 (?, 
	?, 
	?) 
VALUES(?, 
	?, 
	?);
INSERT INTO tabell3 (?, 
	?, 
	?) 
VALUES(?, 
	?, 
	?),
VALUES(?, 
	?, 
	?),
VALUES(?, 
	?, 
	?)";
if ($stmt = $mysqli->prepare($sql)) 
{
	$stmt->bind_param("[...]", [...]);
	$stmt->execute();
	$stmt->close();
}

Det första problemet är att jag inte ens vet om sql-satsen är korrekt. Det andra är att man inte verkar kunna använda mysqli prepare när man har flera inserts.

Medlem sedan aug. 2008815 inlägg
#2

För att svara på mina egna frågor:
Sql satsen var inte korrekt.
Man måste använda mysqli->multi_query(). Det verkar inte gå att använda $mysqli->prepare() på det sättet jag hade tänkt mig.

$mysqli = new mysqli([...]); 
sql = "INSERT INTO tabell1 ((kolumn1, 
	kolumn2, 
	kolumn3) 
VALUES($value1, 
	$value2, 
	$value3);
INSERT INTO tabell2 ((kolumn1, 
	kolumn2, 
	kolumn3) 
VALUES($value1, 
	$value2, 
	$value3);
INSERT INTO tabell3 (kolumn1, 
	kolumn2, 
	kolumn3) 
VALUES($value1, 
	$value2, 
	$value3);
INSERT INTO tabell3 (kolumn1, 
	kolumn2, 
	kolumn3)
VALUES($value1, 
	$value2, 
	$value3);
INSERT INTO tabell3 (kolumn1, 
	kolumn2, 
	kolumn3)
VALUES($value1, 
	$value2, 
	$value3)";
$mysqli->multi_query($sql);
282 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
147 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)