For binnen query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Matthijs Vos

Matthijs Vos

25/12/2012 19:03:26
Quote Anchor link
Hallo,

Ik wil graag een for doen binnen een query, om meerdere values op te slaan. Ik wou dat op de volgende manier doen maar dat werkt niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
    $insert_cap
= $mysqli->query("
                            INSERT INTO capcode_link
                            (ID, capcode)
                             VALUES
                             "
. for($c = 0; $c < count($capcodes_5); $c++){ ."
                             ('"
.$mysqli->insert_id."', '".$capcodes_5[$c]."')
                             "
.}."
                             "
);
?>

Maar de regel waar ik de for begin en eindig krijg ik een error. Wie weet hoe ik dat kan oplossen?
 
PHP hulp

PHP hulp

27/01/2021 05:53:23
 
Bo Ter Ham

Bo Ter Ham

25/12/2012 19:10:00
Quote Anchor link
njah dat is natuurlijk wel een rare constructie.
je kan die for lus beter voor die query doen..
 
Matthijs Vos

Matthijs Vos

25/12/2012 19:16:17
Quote Anchor link
Hoe moet ik die voor de query doen dan? De bedoeling is dat als er 10 waarde in de array $capcodes_5 staat er dus 10 value regels worden gemaakt, en ze allemaal worden geinsert in de database
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/12/2012 19:23:16
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$values
= array()
foreach($capcodes_5 as $value)  {
$values[] = "(LAST_INSERT_ID(), '" . $value . "')";
}

$insert_cap = $mysqli->query("INSERT INTO capcode_link
                            (ID, capcode)
                             VALUES
                 "
. implode(',', $values));
?>

Edit: haakje vergeten
Gewijzigd op 25/12/2012 19:50:14 door Ger van Steenderen
 
Erwin H

Erwin H

25/12/2012 19:28:03
Quote Anchor link
Ger, ik heb het nooit zelf geprobeerd, maar als de tabel waar je nu in een insert in doet ook een auto_increment heeft, gaat die LAST_INSERT_ID dan nog wel goed? Als je namelijk 3 records nu invoert, krijgt de eerste het id mee van het record dat met een andere insert is ingevoerd (wat je hier wil), maar wat krijgt het tweede en het derde record in deze insert?
 
Matthijs Vos

Matthijs Vos

25/12/2012 19:39:43
Quote Anchor link
De table die ik nu insert heeft geen auto_increment. Maar ik gebruik ook $mysqli->insert_id want LAST_INSERT_ID kreeg ik niet aan de praat
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/12/2012 19:47:00
Quote Anchor link
@Erwin,
Ja dat gaat goed zolang je met een multiple insert werkt, mysql onthoudt het id van de vorige query in de sessie.


Toevoeging op 25/12/2012 19:54:59:

MySQL manual:
The currently executing statement does not affect the value of LAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value with one statement, and then refer to LAST_INSERT_ID() in a multiple-row INSERT statement that inserts rows into a table with its own AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain stable in the second statement; its value for the second and later rows is not affected by the earlier row insertions
Gewijzigd op 25/12/2012 19:47:47 door Ger van Steenderen
 
Erwin H

Erwin H

25/12/2012 21:54:24
Quote Anchor link
@Ger, duidelijk, dank je.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.