Versio

Update query loopt fout ??

Overzicht Reageren

/home/joost

/home/joost

19/07/2009 21:17:00
Quote Anchor link
Ik heb het volgende script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
    }
}

?>


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
 
PHP hulp

PHP hulp

25/05/2012 16:58:27
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

19/07/2009 21:21:00
Quote Anchor link
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().
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
/home/joost

/home/joost

19/07/2009 21:22:00
Quote Anchor link
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
 
Lol

lol

19/07/2009 21:26:00
Quote Anchor link
"UPDATE ".$_GET['tabel']." SET ".$key." = ".add($val)." WHERE id = ".$_GET['id']

Volgens mij sluit jij hier de Query niet goed af.
 
- SanThe -

- SanThe -

19/07/2009 21:28:00
Quote Anchor link
Ik zie GET en POST staan, dat is userinput.
 
/home/joost

/home/joost

19/07/2009 21:30:00
Quote Anchor link
@lol: De Query word weldegelijk goed afgesloten ;)
@SanThe: Dat is input die ik zelf verstuur... via inderdaad GET en POST
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
 
- SanThe -

- SanThe -

19/07/2009 21:32:00
Quote Anchor link
Dus jij maakt nooit fouten, je vergist je nooit en je kan feilloos typen?
Ja, dan heb je geen beveiliging nodig.
 
/home/joost

/home/joost

19/07/2009 21:34:00
Quote Anchor link
Tuurlijk maak ik ook fouten, ik ben namelijk ook een mens, maar ik zal het beveiligen... en nu graag weer ontopic aub....
 
- SanThe -

- SanThe -

19/07/2009 21:37:00
Quote Anchor link
Ik vind beveiliging behoorlijk ontopic.
Maar wat werkt er nu nog niet?
 
/home/joost

/home/joost

19/07/2009 21:44:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>

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 -

- SanThe -

19/07/2009 21:48:00
Quote Anchor link
SanThe schreef op 19.07.2009 21:21:
Edit: Tekst hoort tussen enkele quotes te staan.

Die missen nog steeds in de query.
 
/home/joost

/home/joost

19/07/2009 21:53:00
Quote Anchor link
Whoej, over het hoofd gezien, fouten maken is dus toch menselijk :P
Bedankt voor jullie tijd ;)
 
Afra ca

Afra ca

19/07/2009 22:01:00
Quote Anchor link
Kleine opmerking:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>


Kan wat korter :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
function add($string){
    return mysql_real_escape_string($string);
}
function
strip($string){
    return htmlspecialchars(stripslashes($string));
}

?>
 



Overzicht Reageren

Get Adobe Flash player