MySQL query lukt niet helemaal

Beste mensen,

Ik probeer een sql query uit te voeren in een scriptje van me. Hier moet een veld veranderd worden in de database dit veld verschild per user.

Ik kijk in deze query naar de username in de sessie. In de rij van deze username moet het veld feedurl gevuld worden na de submit maar ook weer veranderd kunnen worden als er al een feedurl in staat.

[code:1:33dfd28d0f]<?php
session_start();
include_once(‘db.php’);
$feedurl = mysql_real_escape_string($_POST[‘feedurl’]);
$username = $_SESSION[‘username’];
$query = mysql_query(‘SELECT * FROM users WHERE username = "’.$username.’" LIMIT 1’);
$query = mysql_fetch_array($query);
$change_feed_url = mysql_query(‘INSERT INTO users (feedurl) WHERE username = "’.$username.’" VALUES ("’.$feedurl.’")’ );
?>[/code:1:33dfd28d0f]

Wat ik dus wil weten is hoe ik deze query moet maken

[code:1:33dfd28d0f]$change_feed_url = mysql_query(‘INSERT INTO users (feedurl) WHERE username = "’.$username.’" VALUES ("’.$feedurl.’")’ ); [/code:1:33dfd28d0f]

en de form

[code:1:33dfd28d0f]
<form action=“rssprefs.php” method=“post” id=“change_feed_url” name=“change_feed_url”>
<p>Feed: <input type=“text” value="<?php echo $query[‘feedurl’]?>" name=“feedurl” id=“feedurl” /></p>

        &lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;OK&quot; /&gt;&lt;/p&gt;
    &lt;/form&gt;[/code:1:33dfd28d0f]

bij de change_feed_url wil het dus niet helemaal lukken maar ik begrijp niet goed wat ik nu fout doe met die query. Moet ik misschien UPDATE gebruiken? moet het in een andere volgorde?

Ik ben hier niet zo heul goed in. met veel kloten krijg ik t misschien wel opgelost maar moet dit projectje morgen inleveren dus er zit wat haast achter :wink:

een update-statement is inderdaad handiger aangezien je iets gaat bijwerken, niet toevoegen ;-)

[code:1:1c5e97724d]UPDATE users SET feedurl = “’$feedurl’” WHERE username = “’.$username.’”[/code:1:1c5e97724d]

[quote:0b07df5d8f="UsurPia"]een update-statement is inderdaad handiger aangezien je iets gaat bijwerken, niet toevoegen ;-)

[code:1:0b07df5d8f]UPDATE users SET feedurl = “’$feedurl’” WHERE username = “’.$username.’”[/code:1:0b07df5d8f][/quote:0b07df5d8f]

relaxed man deze werkt
moest alleen nog 2 punten om $feedurl toevoegen. waar zijn die ook alweer voor?

[code:1:0b07df5d8f]UPDATE users SET feedurl = “’.$feedurl.’” WHERE username = “’.$username.’”[/code:1:0b07df5d8f]
zo dus

ligt er een beetje aan hoe je de string opbouwt.

Als je single quotes gebruikt wordt het een zgh. literal string. Dat houdt in dat alles wat er in staat als karakter wordt gezien. Als je een $variable er in hebt zitten wordt niet de waarde van die variabele getoond, maar de letterlijke tekst ($variable dus) wordt getoond.

Als je dubbele quotes gebruikt, is dat niet het geval en krijg je de waarde van de variabele. Doorgaans worden voor query strings dubbele quotes gebruikt omdat in de string vaak single quotes voor komen (en dan zou je die moeten escapen).

aha het heeft daar dus mee te maken.

Nou bedankt voor je snelle antwoord. :slight_smile:

Kijk trouwens uit met die back ticks rondom je tabel naam enzo. Die ergeren bij mij alleen maar en ze zijn niet noodzakelijk.

[quote:3f5155a759="sturb"]Kijk trouwens uit met die back ticks rondom je tabel naam enzo. Die ergeren bij mij alleen maar en ze zijn niet noodzakelijk.[/quote:3f5155a759]

Ik gebruik altijd backticks. Hiermee kun je aangeven wat een veldnaam moet zijn en wat niet. Je hebt bijv. wel eens queries waarin je gereserveerde woorden gebruikt (bijv. status, order, etc). Met gebruik van backticks omzeil je het probleem.

hehe ik gebruik gewoon nooit reserved variables als eigen variabelen. Maar dan zijn bakcticks wel handig ja :) netzoals spaties in veldnamen, toch?

na ff opgezocht te hebben wat die backtiks doen denk ik dat ik ze ook maar gewoon vermijd.

verder hoop ik voor je dat je de input nog even checkt, anders stopt iemand zomaar wat extra code in je query.