Hét vraag- en antwoordplatform van Nederland

Wat is hier fout aan? INSERT INTO counter('verhaal') VALUES($text)

Ik ben bezig met een textverwerker online, gewoon een doodsimpele en alleen voor mezelf. Nu wil ik dat de tekst naar de database wordt verzonden, maar daar zit een fout in...

De volledige code:

mysql_connect("localhost", "root" , "") or die ("error");
mysql_select_db("verhaal") or die ("error 2");

if (isset($_POST['verzend']));
$text = $_POST['word_count'];

if(isset($submit)){
$sql = "INSERT INTO counter('verhaal') VALUES($text)";
mysql_query($sql);
echo "Vezonden!";
}
else{
echo "Mislukt!";
}
?>

Database info:

Naam = verhaal
tabel = counter
kolom = verhaal

Toegevoegd na 38 minuten:
-------------
Werkende code:

mysql_connect("localhost", "root", "") or die ("error");
mysql_select_db("verhaal") or die ("error 2");

$submit = $_POST['submit'];

if(isset($submit)){
if($_POST['word_count'] == ''){
echo "Typ tekst!";
}
else {



$sql = "INSERT INTO counter(verhaal) VALUES('$_POST[word_count]')";
mysql_query($sql);
echo "Verzonden";
}
}
?>

Verwijderde gebruiker
13 jaar geleden
Verwijderde gebruiker
13 jaar geleden
Ik zie niet waar $submit vandaan komt? Misschien dat hij er daardoor niet langs komt. Probeer anders mysql_query($sql) or die("FOUT : " . mysql_error()); neer te zetten op de plek van mysql_query($sql);. Dan krijg je als het (niet) goed is een foutmelding.
Verwijderde gebruiker
13 jaar geleden
Ik krijg ook geen foutmelding :(
Verwijderde gebruiker
13 jaar geleden
Krijg je wel "Verzonden!" te zien?
Verwijderde gebruiker
13 jaar geleden
Nee, krijg ik ook niet te zien..

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Geef jouw antwoord

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

/
Geef Antwoord
+
Selected image

Het beste antwoord

Ik gok dat je de aanhalingstekens verkeertesom hebt staan.

Probeer eens INSERT INTO counter (verhaal) VALUES ('$text');

(Vervang wel de aanhalingstekens als je het kopieert. Deze vervangt goeievraag automatisch.

Toegevoegd na 44 minuten:
Ik moet je er overigens wel op wijzen dat deze manier sql injectie gevoelig is. (http://nl.wikipedia.org/wiki/SQL-injectie)
(Lees meer...)
Verwijderde gebruiker
13 jaar geleden
Verwijderde gebruiker
13 jaar geleden
Ja, hij werkt, maar verzend nog niets naar de database. Het enige dat nu werkt, is dat hij zeg maar in phpmyadmin geen foutmelding meer geeft.
Verwijderde gebruiker
13 jaar geleden
Gelukt :)
Verwijderde gebruiker
13 jaar geleden
Top. :)
Verwijderde gebruiker
13 jaar geleden
Het sql gevoelige maakt niet uit, ik zet hem niet online (A)
Verwijderde gebruiker
13 jaar geleden
In dat geval maakt het inderdaad niet uit. Maar mocht in de toekomst iemand de zelfde soort vraag hebben en hier op uit komen, dan is het altijd handig om te weten. ;)
Verwijderde gebruiker
13 jaar geleden
Haha ja :) Ik heb nu toch wel beveiliging doorgevoerd, gewoon om te kijken (A).. Weet jij toevallig hoe ik in een textarea mysql injectie kan uitvoeren?
Verwijderde gebruiker
13 jaar geleden
Het verschilt nog wel eens met wat voor soort database je gebruikt. maar ' OR 1 = 1#
wil nog wel eens helpen.
met de apostrof sluit je de eerste vergelijking. Met OR 1 = 1 maak je het altijd kloppend, en met -- of # toon je aan dat alles wat erna komt, commentaar is. Maar dit geldt vaak alleen bij select statements. Voor de rest ben ik niet echt geweldig thuis in sql injecties. ;)
Verwijderde gebruiker
13 jaar geleden
Dank je :)

Andere antwoorden (1)

je kan beter gaan werken met classes en functies, houd je je code netjes en overzichtelijk, en als je dan toch bezig bent, is het misschien een idee om even te kijken naar het zend framework, dit maakt het het programmeren een stuk sneller, en efficienter.
mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("verhaal") or die (mysql_error());

$submit = $_POST['submit'];

if ( isset ( $_POST['submit'] )){
if($_POST['word_count'] == '' ){
echo "Typ tekst!";
}else {
$sql = "
INSERT INTO counter
(verhaal)
VALUES ( '".$_POST[word_count]."') ";
mysql_query($sql) or die(mysql_error());
echo "Verzonden";
}
}


Fouten kan je vaak zelf al opsporen met de functie print_r

echo '
';
print_r ($string);
echo '
';


?>

Toegevoegd na 4 minuten:
type foutje
VALUES ( ’".$_POST['word_count']."’) ";
(Lees meer...)
Verwijderde gebruiker
13 jaar geleden
Deel jouw antwoord

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

/
Geef Antwoord
+
Selected image