Query goed, slechts 1 record output ipv 20 waar zit fout?
Ik heb een import script voor mezelf geschreven dat op basis van 2 tabellen data ophaalt en de categorienaam uit tabel 1 gebruikt om categorie id uit tabel 2 te vinden.
Zodra hij dat gedaan heeft kan hij een insert doen in tabel 3.
Ik heb een limit ingesteld op 20 stuks, echter hij haalt me maar 1 record op en insert er dus ook maar 1.
Onderstaand de php code die ik heb gemaakt:
Aub laten zien wat ik fout doe, ben geen programmeur.
Alvast bedankt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?
//DATABASE VARIABELEN
$host="127.0.0.1"; // De MySQL host van de server
$gebruiker = "blabla"; // De gebruikersnaam van de MySQL database op de server
$wachtwoord = "123456"; // Het wachtwoord van de MySQL database op de server
$dbnaam="blabla"; // De naam van de database op uw server
mysql_connect($host, $gebruiker, $wachtwoord); // Niet wijzigen
mysql_select_db($dbnaam) or die (mysql_error()); // Niet wijzigen
// stap 1. ophalen data uit tabel met de te importeren links en ophalen van alle data nodig stap 2 en stap 3.
// Nu even een limit gezet op de insert voor testen, klaar met testen dan LIMIT 5 verwijderen uit query.
$links_qry=
"SELECT
*
FROM
cities_link
LIMIT 20";
$exec_links = mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){
$catname = $veld["Catnaam"];
$sURL = $veld["Url"];
$sTitle = $veld["Linktitel"];
$sDesc = $veld["Linkomschrijving"];
}
// stap 2. verbinden met tabel met categorien voor ophalen catid >> catid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =
"SELECT
*
FROM
page_categories
WHERE
sCatName = '".$catname."'
";
$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veld = mysql_fetch_assoc($exec_catid)) {
$catid = $veld["iCatID"];
}
// stap 3. hier komt de insert in de tabel links
echo "INSERT INTO `blabla`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0')";
mysql_query("INSERT INTO `blabla`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0') ") or die(mysql_error());
?>
//DATABASE VARIABELEN
$host="127.0.0.1"; // De MySQL host van de server
$gebruiker = "blabla"; // De gebruikersnaam van de MySQL database op de server
$wachtwoord = "123456"; // Het wachtwoord van de MySQL database op de server
$dbnaam="blabla"; // De naam van de database op uw server
mysql_connect($host, $gebruiker, $wachtwoord); // Niet wijzigen
mysql_select_db($dbnaam) or die (mysql_error()); // Niet wijzigen
// stap 1. ophalen data uit tabel met de te importeren links en ophalen van alle data nodig stap 2 en stap 3.
// Nu even een limit gezet op de insert voor testen, klaar met testen dan LIMIT 5 verwijderen uit query.
$links_qry=
"SELECT
*
FROM
cities_link
LIMIT 20";
$exec_links = mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){
$catname = $veld["Catnaam"];
$sURL = $veld["Url"];
$sTitle = $veld["Linktitel"];
$sDesc = $veld["Linkomschrijving"];
}
// stap 2. verbinden met tabel met categorien voor ophalen catid >> catid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =
"SELECT
*
FROM
page_categories
WHERE
sCatName = '".$catname."'
";
$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veld = mysql_fetch_assoc($exec_catid)) {
$catid = $veld["iCatID"];
}
// stap 3. hier komt de insert in de tabel links
echo "INSERT INTO `blabla`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0')";
mysql_query("INSERT INTO `blabla`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0') ") or die(mysql_error());
?>
Gewijzigd op 29/12/2011 17:47:50 door Cor S
Ik ga eens proberen of ik dat snel draaiend krijg, ik was al getipt op een while probleem, echter zien is beter dan horen.
Toevoeging op 29/12/2011 17:59:49:
En NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
$exec_links = mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){
$catname = $veld["Catnaam"];
$sURL = $veld["Url"];
$sTitle = $veld["Linktitel"];
$sDesc = $veld["Linkomschrijving"];
// stap 2. verbinden met tabel met categorien voor ophalen catid >> catid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =
"SELECT
*
FROM
page_categories
WHERE
sCatName = '".$catname."'
";
$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veld = mysql_fetch_assoc($exec_catid)) {
$catid = $veld["iCatID"];
}
}
// stap 3. hier komt de insert in de tabel links
echo "INSERT INTO `corsegers_paggev`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0')";
mysql_query("INSERT INTO `corsegers_paggev`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0') ") or die(mysql_error());
?>
$exec_links = mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){
$catname = $veld["Catnaam"];
$sURL = $veld["Url"];
$sTitle = $veld["Linktitel"];
$sDesc = $veld["Linkomschrijving"];
// stap 2. verbinden met tabel met categorien voor ophalen catid >> catid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =
"SELECT
*
FROM
page_categories
WHERE
sCatName = '".$catname."'
";
$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veld = mysql_fetch_assoc($exec_catid)) {
$catid = $veld["iCatID"];
}
}
// stap 3. hier komt de insert in de tabel links
echo "INSERT INTO `corsegers_paggev`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0')";
mysql_query("INSERT INTO `corsegers_paggev`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0') ") or die(mysql_error());
?>
Gewijzigd op 29/12/2011 18:06:10 door Cor S
En dat ene record komt omdat je maar een keer in de insert query terecht komt. Als je per record uit de 2e query een insert wilt doen, zal je dat dus ook binnen de while loop moeten zetten.
Gewijzigd op 29/12/2011 18:08:01 door Erwin H
- SanThe - op 29/12/2011 17:58:08:
Regel 31 en 48 achteraan zetten en klaar.
Toevoeging op 29/12/2011 17:59:49:
En NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s.
Toevoeging op 29/12/2011 17:59:49:
En NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s.
Regel 31 en 48 HELEMAAL achteraan zetten, als laatste dus.
En: NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s. Maak daar $veld1 en $veld2 van. Nu overschrijven ze elkaar.
Het werkt nu, $veld hernoemt en } aan het einde gezet, 20 records opgehaald en geinsert.
Volgende stap voor mij is het leren maken van joins in 1 query, en meer oefenen met loops.
Alle records staan op juiste paginas.
Bedankt voor de hulp en de les maar weer.