Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 671
Jeg lager et Admin Interface og skal lage 'Legg til aarrangement' funksjon.
Når jeg trykker Legg til får jeg opp denne feilmeldingen:

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 '' at line 1

Hele koden ser slik ut:

Kode

<?php
		$sted = $_POST['sted'];
		$artist = $_POST['artist'];
		$full = $_POST['full'];
		if(isset($_POST['leggtil'])){
			if(empty($sted) || empty($artist)){
				echo "Fyll ut alle felt!";
			} else {
				$sqln = sprintf("INSERT INTO `arrangement` SET `sted`=%s, `artist`=%s,", $sec->qs($sted), $sec->qs($artist));
				$SQL->query($sqln) or die('Feil: '.mysql_error());
				$div->redirect('index.php?valg=hoved', '0');
			}
		}
?>

Kode

$sqln = sprintf("INSERT INTO `arrangement` SET `sted`=%s, `artist`=%s,", $sec->qs($sted), $sec->qs($artist)); 

$sqln = sprintf("INSERT INTO `arrangement` SET `sted`='%s', `artist`='%s'", $sec->qs($sted), $sec->qs($artist));
Sist endret av curx; 29. september 2011 kl. 18:12.
Dersom jeg bruker den koden, får jeg opp følgende:

Feil: 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 'Hjemme'', `artist`=''Meg''' at line 1

Kode

$sqln = sprintf("INSERT INTO arrangement SET sted='%s', artist='%s'", $sec->qs($sted), $sec->qs($artist));
Fremdeles, ingen endringer.

Bruker samme oppsett på 'Legg til nyheter', der funker det helt fint.

Den totale koden ser slik ut:

Kode

<?php
		$intro = $_POST['intro'];
		if(isset($_POST['skriv'])){
			if(empty($intro)){
				echo "Du kan ikke legge inn en tom nyhet";
			} else {
				$sqln = sprintf("INSERT INTO `nyheter` SET `intro`=%s, `dato`=%s, `slettet`='nei'", $sec->qs($intro), $sec->qs($datot));
				$SQL->query($sqln) or die('Error news: '.mysql_error());
			}
		}
?>
<form action="" method="post">
	<table>
<h1>Administrator</h1>
<h2>Skriv nyhet</h2>
		<tr>
			<td><textarea name="intro" class="textarea" cols="35" rows="5"></textarea></td>
		</tr>
		<tr>
			<td colspan="2"><input type="submit" name="skriv" value="Skriv" class="submit"></td>
		</tr>
	</table>
</form>
		<tr>
		<p><b>Viktig informasjon</b><br />
Det er veldig viktig at du <u>ikke</u> laster inn siden på nytt etter du har skrevet en nyhet. Dette gjelder både <i>last på nytt</i> knapp for nettleseren og F5. Dersom dette gjøres vil nyheten legges inn 2 ganger. Det er viktig at du går på en annen side først før du går inn på administrator siden igjen før du gjør noe annet.</p>
		</tr>
<hr>
<h2>Legg til arrangement</h2>
<?php
		$sted = $_POST['sted'];
		$artist = $_POST['artist'];
		if(isset($_POST['leggtil'])){
			if(empty($sted) || empty($artist)){
				echo "Fyll ut alle felt!";
			} else {
				$sqln = sprintf("INSERT INTO arrangement SET sted='%s', artist='%s'", $sec->qs($sted), $sec->qs($artist));  
				$SQL->query($sqln) or die('Feil: '.mysql_error());
				$div->redirect('index.php?valg=hoved', '0');
			}
		}
?>
<form action="" method="post">
	<table>
		<tr>
			<td>Sted:</td>
			<td><input type="text" name="sted" class="input"></td>
		</tr>
		<tr>
			<td>Artist:</td>
			<td><input type="text" name="artist" class="input"></td>
		</tr>
		<tr>
			<td colspan="2"><input type="submit" name="leggtil" value="Skriv" class="submit"></td>
		</tr>
	</table>
</form>
z0p
uʍop ǝpısdn
z0p's Avatar
hva gjør $sec->qs()?
Ser du quoter input i andre spørre-strengen din, men ikke i første..
Du bruker UPDATE-syntaxen for å sette inn. Det blir galt.

Kode

<? $sqln = sprintf("INSERT INTO `nyheter` (`intro`, `dato`, `slettet`) VALUES (%s, %s, 'nei')", $sec->qs($intro), $sec->qs($datot)); ?>
Hvis gs-metoden er quote_smart er koden over grei, hvis ikke må du legge quotes også rundt %s.
Sist endret av ma10as; 3. oktober 2011 kl. 14:07.