Hele simpele vraag over query
Ik ben heel slecht met mysql, ik ben nu zo ver dat ik een hoop dingen kan plaatsen:
$q = "INSERT INTO db (postid, linkid, poster, timestamp, body) VALUES('".$postid[$i]."', '".$linkid[$i]."', '".$poster[$i]."', '".$posttime[$i]."', '".$postbody[$i]."')";
Maar nu: nu zou ik graag de rij met de betreffende 'postid' willen ophalen, en de 'postbody' daarvan vergelijken met de nieuwe, en eventueel overschrijven (UPDATE?). Hoe zou ik dat moeten doen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$query = "
INSERT INTO
db (
postid,
linkid,
poster,
timestamp,
body
)
VALUES(
'".$postid[$i]."',
'".$linkid[$i]."',
'".$poster[$i]."',
'".$posttime[$i]."',
'".$postbody[$i]."'
)";
?>
$query = "
INSERT INTO
db (
postid,
linkid,
poster,
timestamp,
body
)
VALUES(
'".$postid[$i]."',
'".$linkid[$i]."',
'".$poster[$i]."',
'".$posttime[$i]."',
'".$postbody[$i]."'
)";
?>
De naam 'db' is waarschijnlijk slecht gekozen, het zegt niets over de data die je in de tabel wegschrijft. Verder is de naam 'timestamp' verwarrend, timestamp is ook een datatype. Overigens een type dat je beter niet kunt gebruiken, gebruik voor datums een DATE, tijden een TIME en datums met tijden een DATETIME.
Frank schreef op 05.01.2007 01:50:
Netjes programeren scheelt je een hoop ellende:
De naam 'db' is waarschijnlijk slecht gekozen, het zegt niets over de data die je in de tabel wegschrijft. Verder is de naam 'timestamp' verwarrend, timestamp is ook een datatype. Overigens een type dat je beter niet kunt gebruiken, gebruik voor datums een DATE, tijden een TIME en datums met tijden een DATETIME.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$query = "
INSERT INTO
db (
postid,
linkid,
poster,
timestamp,
body
)
VALUES(
'".$postid[$i]."',
'".$linkid[$i]."',
'".$poster[$i]."',
'".$posttime[$i]."',
'".$postbody[$i]."'
)";
?>
$query = "
INSERT INTO
db (
postid,
linkid,
poster,
timestamp,
body
)
VALUES(
'".$postid[$i]."',
'".$linkid[$i]."',
'".$poster[$i]."',
'".$posttime[$i]."',
'".$postbody[$i]."'
)";
?>
De naam 'db' is waarschijnlijk slecht gekozen, het zegt niets over de data die je in de tabel wegschrijft. Verder is de naam 'timestamp' verwarrend, timestamp is ook een datatype. Overigens een type dat je beter niet kunt gebruiken, gebruik voor datums een DATE, tijden een TIME en datums met tijden een DATETIME.
Ok, ik ben niet verder gegaan dan mn php code netjes neerzetten en indenten maar dat ziet er indd ook wel beter uit als de sql code ingewikkelder wordt...
Overigens staat db niet voor database, ik heb timestamp bij deze veranderd in posttime. thx voor de tips :) Heb je ook een antwoord op de vraag toevallig?
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
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
$q = "SELECT body FROM db WHERE postid = '" . $postid[$i] . "'";
$res = mysql_query($q, $conn);
if (mysql_fetch_array($res, MYSQL_ASSOC) != false) {
while($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
if ($row['body'] != $postbody[$i]) {
//Update de database
$q = "
UPDATE db
SET body = '" . $postbody[$i] .
"' WHERE postid = '" . $postid[$i] . "'";
}
}
} else {
$q = "
INSERT INTO
db (
postid,
linkid,
poster,
posttime,
body
)
VALUES(
'".$postid[$i]."',
'".$linkid[$i]."',
'".$poster[$i]."',
'".$posttime[$i]."',
'".$postbody[$i]."'
)";
}
mysql_query($q, $conn);
$res = mysql_query($q, $conn);
if (mysql_fetch_array($res, MYSQL_ASSOC) != false) {
while($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
if ($row['body'] != $postbody[$i]) {
//Update de database
$q = "
UPDATE db
SET body = '" . $postbody[$i] .
"' WHERE postid = '" . $postid[$i] . "'";
}
}
} else {
$q = "
INSERT INTO
db (
postid,
linkid,
poster,
posttime,
body
)
VALUES(
'".$postid[$i]."',
'".$linkid[$i]."',
'".$poster[$i]."',
'".$posttime[$i]."',
'".$postbody[$i]."'
)";
}
mysql_query($q, $conn);
Hij doet niks, hij werkt het niet bij maar hij zet het er ook niet opnieuw in. Hij geeft ook geen errors.
je controleert ook niet of dat de query is gelukt, ik zi ook geen mysql_error() staan, dus ik verwacht ook nite dat je een error krijgt
Oh ik dacht dat je gewoon vanzelf errors krijgt net als gewone php errors :X naja het werkt nu, heb de while loop weggehaald.