SQL syntax fout

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tamara

Tamara

08/11/2006 11:50:00
Quote Anchor link
Ik heb nu dit 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
<?
 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (ctype_digit($_GET['id'])) {
            $sql = "UPDATE up SET wat = '$wat', hoe = '$hoe' WHERE id = ".addslashes($_POST['id'])." LIMIT 1";

            if (! $res = mysql_query($sql)) {
                echo 'Er ging iets mis in de sql bij: <br />'.$sql.'<br />De fout is <br />'.mysql_error();
            }

            elseif (mysql_affected_rows($res) > 1) {
                echo 'Query geslaagd. ';
            }
        }
    }
else {
        ?>

<form method="post" action="">
<input type="hidden" name="id" value="" />
<input type="text" name="wat" /> Wat<br />
<input type="text" name="hoe" /> Hoe<br />

<input type="submit" name="submit" value="Edit!" id="submit" onClick="document.getElementById('submit').value = ' Auw! ';" /> <= Klik<br />
</form>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
}
    
?>


als ik het uitvoer krijg ik echter de volgende fout:

Er ging iets mis in de sql bij:
UPDATE up SET wat = 'ik wil een nieuwe wat', hoe = 'maarja, hoe' WHERE id = LIMIT 1
De fout is
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1

( wat = 'ik wil een nieuwe wat', hoe = 'maarja, hoe' )zijn mijn ingevoerde waarden in het formulier
 
PHP hulp

PHP hulp

27/12/2024 07:06:06
 
Robert Deiman

Robert Deiman

08/11/2006 11:56:00
Quote Anchor link
Welke ID moet er worden geupdate?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// dit was niet logisch, je controleerde een $_GET['id'] en je gebruikte de $_POST['id']
       // controleer of numeriek is, bied voldoende veiligheid in dit geval

        if (is_numeric($_POST['id'])) {
            $sql = "UPDATE up SET wat = '$wat', hoe = '$hoe' WHERE id = ".$_POST['id']." LIMIT 1";
?>


Edit:
Na lezen andere topic van je:
Wanneer het id in je URL staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
 if ($_SERVER['REQUEST_METHOD'] == 'GET') {
// dit was niet logisch, je controleerde een $_GET['id'] en je gebruikte de $_POST['id']
       // controleer of numeriek is, bied voldoende veiligheid in dit geval

        if (isset($_GET['id'] && is_numeric($_GET['id'])) {
            $sql = "UPDATE up SET wat = '$wat', hoe = '$hoe' WHERE id = ".$_GET['id']." LIMIT 1";
?>
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Frank -

Frank -

08/11/2006 14:18:00
Quote Anchor link
if (ctype_digit($_GET['id'])) {
$sql = "UPDATE up SET wat = '$wat', hoe = '$hoe' WHERE id = ".addslashes($_POST['id'])." LIMIT 1";

Je controleert of $_GET['id'] wel een nummer is, maar vervolgens ga je $_POST['id'] in de query zetten. Wat heeft $_GET['id'] nu met $_POST['id'] te maken? Helemaal niets, dit zijn 2 totaal verschillende variabelen. Je bent nu zeg maar appels en peren met elkaar aan het vergelijken.

De vraag is dus: Waar moet het id nu vandaan komen? Uit de url (GET) of uit een formulier dat je met post verstuurd (POST) ?

Ps. Je vergeet overigens te controleren of $_GET['id'] wel bestaat, je hoort hier een notice op te krijgen wanneer het id niet in de url staat. Controleer dit even en zorg dat error_reporting(E_ALL); op de eerste regel van je script staat.
 
Tamara

Tamara

08/11/2006 16:29:00
Quote Anchor link
mag ik vragen wat het verschil tussen $_GET en $POST is?

overigens als ik de querie verander in $_GET krijg ik de volgende fout:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in d:\FORTUNE\nieuws_eigensite\php\bewerk.php on line 52

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? print_r($_POST); ?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? print_r($_GET); ?>


levert het volgende op :

Array ( [id] => [wat] => input wat [hoe] => input hoe )


Array ( [id] => 4 )

hij pakt 'm dus wel degelijk
 
Frank -

Frank -

08/11/2006 17:05:00
Quote Anchor link
Zoals je kunt zien staan er in POST een 3-tal gegevens die uit een formulier komen (je verstuurt het formulier tenslotte met POST!) en in de GET staat 1 gegeven dat uit de url komt, het id.

Jij gebruik in de query alleen $_POST['id'] die helemaal niet bestaat, zie jouw resulaten. Jij MOET $_GET['id'] gebruiken, wat al meerdere malen is gezegd en al in diverse voorbeelden staat.

mysql_affected_rows($res) mag je vervangen door mysql_affected_rows(), dus zonder $res. Zie de PHP-handleiding.
 



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.