Update query loopt fout ??
Ik heb het volgende script:
En de volgende errors:
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 22
Error: 1
Notice: Unknown table '1248025619IMG_4611' in field list in /*knip*/edit.php on line 22
Error: 1
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 22
Error: 1Er is een error opgetreden.
Hoe kan het dat hij verkeerd loopt na een aantal goed te hebben gedaan ??
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 23
Error: 1
Notice: Unknown table '1248025619IMG_4611' in field list in /*knip*/edit.php on line 23
Error: 1Er is een error opgetreden.
Er zijn 4 Query's gelukt
Uiteraard is 1248025619IMG_4611 geen tabel en is column 'Test' in 'field list' geen kolom, maar zijn dit waarden...
ergens zit er dus een "lek" in het script...
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
include 'connect.php';
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
$qry="SELECT * FROM ".$_GET["tabel"];
if ( !($result = mysql_query($qry)) ) {
echo "Error: ".mysql_error();
}
else {
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$error=0;
$goed=0;
while (list($key, $val) = each($_POST)) {
if ($key != "submit_edit") {
if (!mysql_query("UPDATE ".$_GET['tabel']." SET ".$key." = ".add($val)." WHERE id = ".$_GET['id'])) {
echo "Error: ".trigger_error(mysql_error());
$error++;
}
else {
$goed++;
}
}
}
if ($error==0) {
echo 'Succesvol ge-update!!';
echo '<meta http-equiv="refresh" content="2; URL=edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" />';
}
else {
echo 'Er is een error opgetreden.';
echo '<br />Er zijn '.$goed.' Query\'s gelukt.';
}
}
else {
echo '<form action="edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" method="POST">';
$i=0;
$a=0;
$fields=mysql_num_fields($result);
while ($i != mysql_num_fields($result)) {
$field_names = array();
$field_type = array();
while ($i != mysql_num_fields($result)) {
$field_names[] = mysql_field_name($result, $i);
$field_types[] = mysql_field_type($result, $i);
$i++;
}
echo '<table style="width: auto; margin: 0px auto; margin-top: 40px;">';
foreach ($field_names as $field_name) {
$Qry=mysql_query("SELECT ".$field_name." FROM ".$_GET["tabel"]." WHERE id = ".$_GET["id"]) or die (mysql_error());
while ($row=mysql_fetch_assoc($Qry)) {
echo '<tr>';
echo '<th align="left" valign="top">'.$field_name.'</th>';
if ($field_name == "album") {
echo '<td>';
$qrY=mysql_query("SELECT * FROM album") or die (mysql_error());
echo '<select name="'.$field_name.'">';
while ($rijtje=mysql_fetch_assoc($qrY)) {
if ($rijtje["id"] == $row[$field_name]) {
echo '<option value="'.$rijtje["id"].'" selected="selected">'.$rijtje["naam"].'</option>';
}
else {
echo '<option value="'.$rijtje["id"].'">'.$rijtje["naam"].'</option>';
}
}
echo '</select>';
echo '</td>';
}
elseif (mysql_field_type($result, $a) != "blob") {
echo '<td><input type="text" name="'.$field_name.'" value="'.strip($row[$field_name]).'"></td>';
}
else {
$row[$field_name]=str_replace("<br />", "\n\r", $row[$field_name]);
echo '<td><textarea name="'.$field_name.'" cols="70" rows="10">'.strip($row[$field_name]).'</textarea></td>';
}
echo '</tr>';
}
$a++;
}
echo '<tr>';
echo '<td><a href="index.php?page=edit&delete=ja&tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" onclick="javascript: return confirm(\'Weet je zeker dat je deze waarde wilt wissen?\')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>';
echo "<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>";
echo '</tr>';
echo '</table>';
}
echo '</form>';
}
}
?>
include 'connect.php';
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
$qry="SELECT * FROM ".$_GET["tabel"];
if ( !($result = mysql_query($qry)) ) {
echo "Error: ".mysql_error();
}
else {
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$error=0;
$goed=0;
while (list($key, $val) = each($_POST)) {
if ($key != "submit_edit") {
if (!mysql_query("UPDATE ".$_GET['tabel']." SET ".$key." = ".add($val)." WHERE id = ".$_GET['id'])) {
echo "Error: ".trigger_error(mysql_error());
$error++;
}
else {
$goed++;
}
}
}
if ($error==0) {
echo 'Succesvol ge-update!!';
echo '<meta http-equiv="refresh" content="2; URL=edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" />';
}
else {
echo 'Er is een error opgetreden.';
echo '<br />Er zijn '.$goed.' Query\'s gelukt.';
}
}
else {
echo '<form action="edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" method="POST">';
$i=0;
$a=0;
$fields=mysql_num_fields($result);
while ($i != mysql_num_fields($result)) {
$field_names = array();
$field_type = array();
while ($i != mysql_num_fields($result)) {
$field_names[] = mysql_field_name($result, $i);
$field_types[] = mysql_field_type($result, $i);
$i++;
}
echo '<table style="width: auto; margin: 0px auto; margin-top: 40px;">';
foreach ($field_names as $field_name) {
$Qry=mysql_query("SELECT ".$field_name." FROM ".$_GET["tabel"]." WHERE id = ".$_GET["id"]) or die (mysql_error());
while ($row=mysql_fetch_assoc($Qry)) {
echo '<tr>';
echo '<th align="left" valign="top">'.$field_name.'</th>';
if ($field_name == "album") {
echo '<td>';
$qrY=mysql_query("SELECT * FROM album") or die (mysql_error());
echo '<select name="'.$field_name.'">';
while ($rijtje=mysql_fetch_assoc($qrY)) {
if ($rijtje["id"] == $row[$field_name]) {
echo '<option value="'.$rijtje["id"].'" selected="selected">'.$rijtje["naam"].'</option>';
}
else {
echo '<option value="'.$rijtje["id"].'">'.$rijtje["naam"].'</option>';
}
}
echo '</select>';
echo '</td>';
}
elseif (mysql_field_type($result, $a) != "blob") {
echo '<td><input type="text" name="'.$field_name.'" value="'.strip($row[$field_name]).'"></td>';
}
else {
$row[$field_name]=str_replace("<br />", "\n\r", $row[$field_name]);
echo '<td><textarea name="'.$field_name.'" cols="70" rows="10">'.strip($row[$field_name]).'</textarea></td>';
}
echo '</tr>';
}
$a++;
}
echo '<tr>';
echo '<td><a href="index.php?page=edit&delete=ja&tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" onclick="javascript: return confirm(\'Weet je zeker dat je deze waarde wilt wissen?\')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>';
echo "<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>";
echo '</tr>';
echo '</table>';
}
echo '</form>';
}
}
?>
En de volgende errors:
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 22
Error: 1
Notice: Unknown table '1248025619IMG_4611' in field list in /*knip*/edit.php on line 22
Error: 1
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 22
Error: 1Er is een error opgetreden.
Hoe kan het dat hij verkeerd loopt na een aantal goed te hebben gedaan ??
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 23
Error: 1
Notice: Unknown table '1248025619IMG_4611' in field list in /*knip*/edit.php on line 23
Error: 1Er is een error opgetreden.
Er zijn 4 Query's gelukt
Uiteraard is 1248025619IMG_4611 geen tabel en is column 'Test' in 'field list' geen kolom, maar zijn dit waarden...
ergens zit er dus een "lek" in het script...
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
Die kolommen en tabellen bestaan dus niet in je database.
Edit: Tekst hoort tussen enkele quotes te staan. Verder moet je userinput altijd beveiligen met mysql_real_escape_string().
Edit: Tekst hoort tussen enkele quotes te staan. Verder moet je userinput altijd beveiligen met mysql_real_escape_string().
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Ik had net het bericht een beetje ge-edit om het iets duidelijker te maken ;), ik had er dus ook bijgezet dat dat inderdaad geen tabellen en kolommen zijn.
Edit::
Het is geen user input, het is input wat ik zelf gebruik om dingen te wijzigen (als admin dus).
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
"UPDATE ".$_GET['tabel']." SET ".$key." = ".add($val)." WHERE id = ".$_GET['id']
Volgens mij sluit jij hier de Query niet goed af.
Volgens mij sluit jij hier de Query niet goed af.
Ik zie GET en POST staan, dat is userinput.
@lol: De Query word weldegelijk goed afgesloten ;)
@SanThe: Dat is input die ik zelf verstuur... via inderdaad GET en POST
@SanThe: Dat is input die ik zelf verstuur... via inderdaad GET en POST
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
Dus jij maakt nooit fouten, je vergist je nooit en je kan feilloos typen?
Ja, dan heb je geen beveiliging nodig.
Ja, dan heb je geen beveiliging nodig.
Tuurlijk maak ik ook fouten, ik ben namelijk ook een mens, maar ik zal het beveiligen... en nu graag weer ontopic aub....
Ik vind beveiliging behoorlijk ontopic.
Maar wat werkt er nu nog niet?
Maar wat werkt er nu nog niet?
Ik zal even mijn database model erbij "pakken"...
CREATE TABLE `foto` (
`id` int(11) NOT NULL auto_increment,
`album` int(11) NOT NULL default '0',
`titel` varchar(150) collate utf8_unicode_ci NOT NULL default '',
`naam` varchar(150) collate utf8_unicode_ci NOT NULL default '',
`beschrijving` text collate utf8_unicode_ci NOT NULL,
`volg_nr` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2
Nu heb ik dus geen tabel met de naam 1248025619IMG_4611 en geen kolom met de naam Test...
Als ik de query uit voer krijg ik dus te horen dat die tabel, nog de kolom niet bestaan...
Het vage is dus dat hij er 4 goed uitvoert, en dat de vijfde hij de waarde die in het <input> field zitten gebruikt als tabel of als naam van de kolom ??
Als ik de pagina open heb ik de volgende broncode:
De broncode klopt, alleen het updaten klopt niet....
Het vreemde is dus dat hij naam, waarde en tabel door elkaar haalt maar dit pas doet na 4 update query's...
CREATE TABLE `foto` (
`id` int(11) NOT NULL auto_increment,
`album` int(11) NOT NULL default '0',
`titel` varchar(150) collate utf8_unicode_ci NOT NULL default '',
`naam` varchar(150) collate utf8_unicode_ci NOT NULL default '',
`beschrijving` text collate utf8_unicode_ci NOT NULL,
`volg_nr` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2
Nu heb ik dus geen tabel met de naam 1248025619IMG_4611 en geen kolom met de naam Test...
Als ik de query uit voer krijg ik dus te horen dat die tabel, nog de kolom niet bestaan...
Het vage is dus dat hij er 4 goed uitvoert, en dat de vijfde hij de waarde die in het <input> field zitten gebruikt als tabel of als naam van de kolom ??
Als ik de pagina open heb ik de volgende broncode:
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
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
<form action="edit.php?tabel=foto&id=1" method="POST">
<table style="width: auto; margin: 0px auto; margin-top: 40px;">
<tr>
<th align="left" valign="top">id</th>
<td><input type="text" name="id" value="1"></td>
</tr>
<tr>
<th align="left" valign="top">album</th>
<td>
<select name="album">
<option value="1" selected="selected">Marille</option>
</select>
</td>
</tr>
<tr>
<th align="left" valign="top">titel</th>
<td><input type="text" name="titel" value="Test"></td>
</tr>
<tr>
<th align="left" valign="top">naam</th>
<td><input type="text" name="naam" value="1248025619IMG_4611.JPG"></td>
</tr>
<tr>
<th align="left" valign="top">beschrijving</th>
<td><textarea name="beschrijving" cols="70" rows="10"></textarea></td>
</tr>
<tr>
<th align="left" valign="top">volg_nr</th>
<td><input type="text" name="volg_nr" value="0"></td>
</tr>
<tr>
<td><a href="index.php?page=edit&delete=ja&tabel=foto&id=1" onclick="javascript: return confirm('Weet je zeker dat je deze waarde wilt wissen?')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>
<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>
</tr>
</table>
</form>
<table style="width: auto; margin: 0px auto; margin-top: 40px;">
<tr>
<th align="left" valign="top">id</th>
<td><input type="text" name="id" value="1"></td>
</tr>
<tr>
<th align="left" valign="top">album</th>
<td>
<select name="album">
<option value="1" selected="selected">Marille</option>
</select>
</td>
</tr>
<tr>
<th align="left" valign="top">titel</th>
<td><input type="text" name="titel" value="Test"></td>
</tr>
<tr>
<th align="left" valign="top">naam</th>
<td><input type="text" name="naam" value="1248025619IMG_4611.JPG"></td>
</tr>
<tr>
<th align="left" valign="top">beschrijving</th>
<td><textarea name="beschrijving" cols="70" rows="10"></textarea></td>
</tr>
<tr>
<th align="left" valign="top">volg_nr</th>
<td><input type="text" name="volg_nr" value="0"></td>
</tr>
<tr>
<td><a href="index.php?page=edit&delete=ja&tabel=foto&id=1" onclick="javascript: return confirm('Weet je zeker dat je deze waarde wilt wissen?')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>
<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>
</tr>
</table>
</form>
De broncode klopt, alleen het updaten klopt niet....
Het vreemde is dus dat hij naam, waarde en tabel door elkaar haalt maar dit pas doet na 4 update query's...
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
'SanThe:
Edit: Tekst hoort tussen enkele quotes te staan.
Die missen nog steeds in de query.
Whoej, over het hoofd gezien, fouten maken is dus toch menselijk :P
Bedankt voor jullie tijd ;)
Bedankt voor jullie tijd ;)
Kleine opmerking:
Kan wat korter :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
?>
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
?>
Kan wat korter :
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function add($string){
return mysql_real_escape_string($string);
}
function strip($string){
return htmlspecialchars(stripslashes($string));
}
?>
function add($string){
return mysql_real_escape_string($string);
}
function strip($string){
return htmlspecialchars(stripslashes($string));
}
?>




