Query komt niet aan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dalando De Zuil

Dalando De Zuil

23/08/2010 21:25:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    $query = "INSERT INTO shorter ( long, short ) VALUES ( '".mysql_real_escape_string($long)."', '".mysql_real_escape_string($short)."' )";

    mysql_query($query);


Deze query komt niet aan in mijn database... wat is er aan de hand?
 
PHP hulp

PHP hulp

25/04/2024 21:42:46
 
Tom Tom

Tom Tom

23/08/2010 21:28:21
Quote Anchor link
maak van:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query($query);


eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query($query) or die(mysql_error());
 
Obelix Idefix

Obelix Idefix

23/08/2010 21:28:51
Quote Anchor link
Echo de query eens naar het scherm; klopt het dan met wat je verwacht?
Hoewel niemand het waardeert, maar het nu wel een oplossing kan bieden, plaats
or die(mysql_error()) na het ) op regel 3 --> je krijgt dan hopelijk/mogelijk een foutmelding.
Edit: met die laatste opmerking was Tom Tom me net voor.
Gewijzigd op 23/08/2010 21:29:33 door Obelix Idefix
 
Milo S

Milo S

23/08/2010 21:37:50
Quote Anchor link
Zijn jullie gek? Ga die gozer niet aanleren dingen te doden...

gebruik gewoon:
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
<?php
$qry
= "INSERT INTO
            shorter
                (
                long,
                short
                )
        VALUES
            (
            '"
.mysql_real_escape_string($long)."',
            '"
.mysql_real_escape_string($short)."'
            )"
;
            
if($sql = mysql_query($qry))
{

    if(mysql_num_rows($sql) > 0)
    {

        // Goed
    }
    else
    {
        echo 'Geen items gevonden.';    
    }
}

else
{
    echo 'Er is een fout in de query.<br />';
    echo mysql_error();    
}

?>
Gewijzigd op 23/08/2010 21:40:21 door Milo S
 
Dalando De Zuil

Dalando De Zuil

23/08/2010 22:06:59
Quote Anchor link
okay, nu gebruik ik dit:

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
$qry = "INSERT INTO
                shorter
                    (
                    long,
                    short
                    )
            VALUES
                (
                '".mysql_real_escape_string($long)."',
                '".mysql_real_escape_string($short)."'
                )";
               
    if($sql = mysql_query($qry))
    {
        if(mysql_num_rows($sql) > 0)
        {
            echo 'Created! url: <br/>';
            echo $fullurl;
            echo 's.php?u=';
            echo $short;
        }
        else
        {
                echo 'Error.';    
        }
    }
    else
    {
        echo 'Er is een fout in de query.<br />';
        echo mysql_error();    
    }
}
}


Maar nu krijg ik dit:

Er is een fout in de query.
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 'long, short ) VALUES ( ' at line 4
 
Nicoow Unknown

Nicoow Unknown

23/08/2010 22:14:04
Quote Anchor link
@Milo,
Is het voor INSERT INTO en UPDATE niet mysql_affected_rows, en alleen voor SELECTS mysql_num_rows?
Correct me if i'm wrong
 
Marick Marick

Marick Marick

23/08/2010 22:20:04
Quote Anchor link
Long is een gereserveerd woord volgensmij.
 
Veur Heur

Veur Heur

23/08/2010 22:33:42
 
Dalando De Zuil

Dalando De Zuil

24/08/2010 13:23:39
Quote Anchor link
Kay, nou heb ik het verandert:

$qry = "INSERT INTO shorter ('langeurl', 'korteurl') VALUES ('".mysql_real_escape_string($long)."', '".mysql_real_escape_string($short)."' )";

Maar hij doet het nog steeds niet. ?
 
Joren de Wit

Joren de Wit

24/08/2010 13:29:28
Quote Anchor link
Haal de quotes om langeurl en korteurl weg, het zijn kolomnamen geen strings!

@Nico: daar heb je helemaal gelijk in :-)
 
Dalando De Zuil

Dalando De Zuil

24/08/2010 14:09:43
Quote Anchor link
Het werkt.
Maar nu heb ik een ander probleem, als ik het uit de database haal:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$query = "SELECT * FROM shorter WHERE korteurl = '".$u."'";
    if($sql = mysql_query($query))
    {    
        while($row = mysql_fetch_assoc($res))
        {
             header("Location: ".$row['longurl']);
        }
    }
    else
    {
        echo 'Er is een fout in de query.<br />';
            echo mysql_error();  
    }


Nu blijft de pagina leeg?
Gewijzigd op 24/08/2010 14:10:02 door Dalando De Zuil
 
Jelmer -

Jelmer -

24/08/2010 14:13:31
Quote Anchor link
Wat nu als die query geen resultaten oplevert? Dan gebeurt er niets (de while-lus wordt dan niet doorlopen)

Waarom die while-lus als je maar één resultaat wilt ophalen?
Gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$row
= mysql_fetch_assoc($res);

if($row) {
    header('Location: ' . $row['longurl']);
    exit;
}

else {
    echo 'URL niet gevonden';
}

?>
 
Dalando De Zuil

Dalando De Zuil

24/08/2010 14:22:13
Quote Anchor link
Jelmer rrrr op 24/08/2010 14:13:31:
Wat nu als die query geen resultaten oplevert? Dan gebeurt er niets (de while-lus wordt dan niet doorlopen)

Waarom die while-lus als je maar één resultaat wilt ophalen?
Gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$row
= mysql_fetch_assoc($res);

if($row) {
    header('Location: ' . $row['longurl']);
    exit;
}

else {
    echo 'URL niet gevonden';
}

?>


Hmm, nu krijg ik de URL NIET GEVONDEN error. Ik zal even wat meer code posten:

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
if(isset($_GET['u'])){
    $query = "SELECT * FROM shorter WHERE korteurl = '".$_GET['u']."'";
    if($sql = mysql_query($query))
    {    
        $row = mysql_fetch_assoc($res);

        if($row)
        {
                header('Location: ' . $row['longurl']);
                exit;
        }
        else
        {
                echo 'URL niet gevonden';
        }
    }
    else
    {
        echo 'Er is een fout in de query.<br />';
            echo mysql_error();  
    }

Als dit stukkie code klaar is werkt mijn script! Ga ik m hier posten na wat verbeteringen.. ;)
 
Joren de Wit

Joren de Wit

24/08/2010 14:23:24
Quote Anchor link
Netter vind ik dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if(mysql_num_rows($res) > 0) {
  $row = mysql_fetch_assoc($res);
  header(...);
}

else {
  // url niet gevonden
}
?>


edit: Zorg wel dat je variabelen kloppen. Jelmer en ik gebruiken $res waar jij $sql gebruikt!
Gewijzigd op 24/08/2010 14:24:21 door Joren de Wit
 
Jelmer -

Jelmer -

24/08/2010 14:25:17
Quote Anchor link
Zet eens echo voor die regel met $query = ... zodat je even kan zien wat de exacte query is die wordt uitgevoerd.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"SELECT * FROM shorter WHERE korteurl = '".$_GET['u']."'"

Piewiewiew sql-injection alarm!
Dat moet minstens worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"SELECT * FROM shorter WHERE korteurl = '".mysql_real_escape_string($_GET['u']) . "'"
 
Dalando De Zuil

Dalando De Zuil

24/08/2010 14:27:38
Quote Anchor link
Hij redirect nu nog steeds niet naar het goeie adres:

header('Location: ' . $row['longurl']);

Dit gaat nu naar de index pagina..?




Toevoeging op 24/08/2010 14:28:22:

Jelmer rrrr op 24/08/2010 14:25:17:
Zet eens echo voor die regel met $query = ... zodat je even kan zien wat de exacte query is die wordt uitgevoerd.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"SELECT * FROM shorter WHERE korteurl = '".$_GET['u']."'"

Piewiewiew sql-injection alarm!
Dat moet minstens worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"SELECT * FROM shorter WHERE korteurl = '".mysql_real_escape_string($_GET['u']) . "'"


Oops ook vergeten... Goh. bedankt :)
Gewijzigd op 24/08/2010 14:53:09 door Dalando De Zuil
 
Niek s

niek s

25/08/2010 21:00:38
Quote Anchor link
Ik denk dat de beste oplossing voor je problemen is:
Ga PHP leren (tutorial).
 
Arjan -

Arjan -

25/08/2010 22:58:51
Quote Anchor link
[zeikmode]
Lastig hé google?

"Wait, Let me google that for you"
[/zeikmode]

Ga eerst eens leren op welke manieren je kan debuggen. Niemand zal zonder debuggen een middelmatige tot grote website kunnen opzetten. Tijdens de ontwikkelingsfase is het ook niet erg om extra echo's te plaatsen om te controleren of je de juiste output krijgt. En mysql errors weergeven is dan wel het eerste wat je dient te doen om te achterhalen waar de fout zit.
 



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.