Fout in query-syntax

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank

Frank

15/06/2007 12:38:00
Quote Anchor link
Beste PHP-ers, naar aanleiding van mijn opgestelde en uitgevoerde query, krijg ik de volgende foutmelding. Weten jullie wat er fout aan is?

You have an error in your SQL syntax near 'wel','wel','wel','wel','gesubsidieerde arbeid','wel','wel','wel','intake','begel' at line 1INSERT INTO enquete(ip, datum, vraag1, vraag2, vraag3, vraag4, vraag5,vraag6, vraag7, vraag8, vraag9, vraag10, vraag11, vraag12,vraag13, vraag14, vraag15, vraag16, vraag17, vraag18, vraag19,vraag20, vraag21, vraag22, vraag23, vraag24, vraag25, vraag26,vraag27, vraag28, vraag29, vraag30, vraag31) VALUES ('127.0.0.1','16:06:2007 12:30:54','man','27-35','WW','Lager Onderwijs','december 2006','niet','wel','wel','wel','wel','wel','wel','wel','wel','wel','wel','wel','wel','wel,'wel','wel','wel','wel','gesubsidieerde arbeid','wel','wel','wel','intake','begeleiding','wel','1')

Dit is de code:

$sql="INSERT INTO enquete";
$sql.="(ip, datum, vraag1, vraag2, vraag3, vraag4, vraag5,";
$sql.="vraag6, vraag7, vraag8, vraag9, vraag10, vraag11, vraag12,";
$sql.="vraag13, vraag14, vraag15, vraag16, vraag17, vraag18, vraag19,";
$sql.="vraag20, vraag21, vraag22, vraag23, vraag24, vraag25, vraag26,";
$sql.="vraag27, vraag28, vraag29, vraag30, vraag31)";
$sql.=" VALUES ";
$sql.="('$ip','$datum','$vraag1','$vraag2','$vraag3','$vraag4','$vraag5',";
$sql.="'$vraag6','$vraag7','$vraag8','$vraag9','$vraag10','$vraag11','$vraag12',";
$sql.="'$vraag13','$vraag14','$vraag15','$vraag16','$vraag17','$vraag18','$vraag19,";
$sql.="'$vraag20','$vraag21','$vraag22','$vraag23','$vraag24','$vraag25','$vraag26',";
$sql.="'$vraag27','$vraag28','$vraag29','$vraag30','$vraag31')";


$connection=mysql_connect("localhost","root","");
$database=mysql_select_db("enquete", $connection);

mysql_query($sql);
echo mysql_error();
echo $sql;
 
PHP hulp

PHP hulp

17/11/2024 04:51:20
 
Frank -

Frank -

15/06/2007 12:51:00
Quote Anchor link
Nogmaals, ga normaliseren! Je komt nu al in de problemen en gezien bovenstaande data zie ik al veel meer problemen opduiken. Het is bv. vrijwel onmogelijk een patronen in de data te ontdekken wanneer je bv. een 1000 records in de database hebt staan. Oorzaak: genummerde kolomnamen...

Verder zijn de datatypes niet goed, dat gaat ook nog een berg problemen opleveren. Zie de handleiding.

DATE of DATETIME voor een datum en 'wel' zal waarschijnlijk als een boolean moeten worden opgeslagen en dus gewoon TRUE of FALSE gebruiken.
 
Frank

Frank

15/06/2007 13:09:00
Quote Anchor link
Beste Frank,

Ik wil best normaliseren maar zou niet weten hoe ik dat in dit geval moet doen.Voor datum heb ik al DATETIME als datatype, voor id INT en de rest VARCHAR. Maat idd, ik ben geen specialist in databases.

Het enige wat ik beoog te doen, als dit werkt, is kijken hoeveel x er bijvoorbeeld wel op een bepaalde vraag is geantwoord. Meer niet.

Groet,
Frank
 
Rembem

Rembem

15/06/2007 13:16:00
Quote Anchor link
Je hebt voor $vraag19 een ' staan en daarna niet dus maak er dit van:
'$vraag'
 
Frank -

Frank -

15/06/2007 13:18:00
Quote Anchor link
Zoals jij wilt!

Noteer de queries voortaan wel netter, dan is de fout zo gevonden:
'wel',
'wel,
'wel',

bij de 2e wel ontbreekt een quote.

Nogmaals, het lijkt mij een waarde die als boolean moet worden opgeslagen (wel/niet), dan krijg je gewoon een TRUE of FALSE zonder quotes. Dan heb je dit probleem ook niet meer.

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
<?
$sql
="INSERT INTO enquete";
$sql.="(ip, datum, vraag1)";
$sql.=" VALUES ";
$sql.="('$ip','$datum','$vraag1')";

// is hetzelfde als
$sql="
INSERT INTO
  enquete(
    ip,
    datum,
    vraag1
)
VALUES(
  '$ip',
  '$datum',
  '$vraag1'
)
"
;
?>

Nu open en sluit je de string slechts 1x en niet tientallen keren. De query wordt zo een stuk beter leesbaar en is dus eenvoudiger te debuggen.
 
Frank

Frank

15/06/2007 13:31:00
Quote Anchor link
Bedankt RemBem, zat me helemaal suf te staren maar zag het niet. Eindelijk werkt het. Zal ik nu eens gaan kijken hoe ik een en ander kan normaliseren.

prettig weekend

Frank
 



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.