webForumDet fria alternativet

Flera queries i samma mysql_query()?

PHPur PHP

4 svar · 1 364 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#1

Jag gissar att det inte går eftersom det heter just mysql_query(), men finns det något som heter mysql_queries() där man kan skicka in flera samtidigt?
Vad händer annars om jag skickar två mysql_query() efter varann och det avbryts mellan de båda? Utförs båda, en eller ingen då?

En SQL-fråga som relaterar också också. Kan man göra JOIN i en INSERT så att det skapas två poster i olika tabeller, men med en fråga?

Tack!

Medlem sedan juli 2000449 inlägg
#2

* Du kan inte köra två queries med en förförfrågan.

* Du kan inte skapa två inserts med en query. Se mysql_last_id för att få med dig korrekta relationer.

Notera att du kan göra en subselect i en insert, kan ibland hjälpa till att effektivisera.

Du sparar sällan kraft på att minimera antalet frågor till databasen, det är hur du ställer frågorna och hur du behandlar resultatet som påverkar mest.

Medlem sedan nov. 20016 480 inlägg
#3

Allright, tack! Men min viktigaste fråga kvarstår. Vad händer om jag kör två inserts och det avbryts efter den första? Är innodb så smart att den tar bort den första igen då? Nåt speciellt att tänka på?

Tack!

Medlem sedan juli 2000449 inlägg
#4

* Databasen är inte så smart att den rensar upp oavslutat skräp efter sig.

* Du får göra en kontrollfråga efter de två körningarna för att säkra att posterna skapats som de ska ELLER fördjupa dig inom COMMIT och kringföljande logik. http://dev.mysql.com/doc/refman/5.6/en/commit.html

Medlem sedan nov. 2006188 inlägg
#5

Du tänker på funktionen INNER JOINE som jag fattar det alltså joina 2 tabeller i samma sql?

isådan fall kan jag ge ett exmpel här.

<?php
$sql = "
  SELECT u.id, u.namn,
  s.id, s.userID, s.datum
  FROM tabell_två s
  INNER JOIN medlems_databas u ON s.userID = u.id
  WHERE s.userID = '{$_SESSION[['sess_id']}'
  ORDER BY s.datum DESC
  LIMIT 25
";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
?>

och vill du joina fler tabeller i samma sql så fortsätter du bara med JOINE osv. och ger tabbellen ett namn typ b för besökare osv som ett exmpel.
Att skapa flera qurey ovaset om det är en insert eller update eller en mysql qury så bör man arbeta mot en och samma hela tiden.

Så det bästa är köra alla tabeller du behöver i en och samma sql och ta endast ut dem rader du behöver.

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