Query komt niet aan in database
Code (php)
1
2
3
2
3
$query = "INSERT INTO shorter ( long, short ) VALUES ( '".mysql_real_escape_string($long)."', '".mysql_real_escape_string($short)."' )";
mysql_query($query);
mysql_query($query);
Deze query komt niet aan in mijn database... wat is er aan de hand?
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
gebruik gewoon:
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
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();
}
?>
$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
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
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();
}
}
}
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
Is het voor INSERT INTO en UPDATE niet mysql_affected_rows, en alleen voor SELECTS mysql_num_rows?
Correct me if i'm wrong
Long is een gereserveerd woord volgensmij.
$qry = "INSERT INTO shorter ('langeurl', 'korteurl') VALUES ('".mysql_real_escape_string($long)."', '".mysql_real_escape_string($short)."' )";
Maar hij doet het nog steeds niet. ?
@Nico: daar heb je helemaal gelijk in :-)
Maar nu heb ik een ander probleem, als ik het uit de database haal:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
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();
}
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
Waarom die while-lus als je maar één resultaat wilt ophalen?
Gewoon
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
Waarom die while-lus als je maar één resultaat wilt ophalen?
Gewoon
Hmm, nu krijg ik de URL NIET GEVONDEN error. Ik zal even wat meer code posten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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();
}
$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.. ;)
Code (php)
1
2
3
4
5
6
7
8
9
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
}
?>
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
Piewiewiew sql-injection alarm!
Dat moet minstens worden:
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.
Piewiewiew sql-injection alarm!
Dat moet minstens worden:
Piewiewiew sql-injection alarm!
Dat moet minstens worden:
Oops ook vergeten... Goh. bedankt :)
Gewijzigd op 24/08/2010 14:53:09 door Dalando De Zuil
Ga PHP leren (tutorial).
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.