Ik ben al mijn huidige code aan het omzetten naar code met enkele quotes aan de buiten kant.
Maar met mijn sql lijn heb ik een probleempje mijn docent PHP had gezegd dat bij de waardes enkele quotes moesten staan. Maar als ik op deze lijn de buitenste quotes omzet naar enkele krijg in een parse error.
Ik heb de juiste manier gevonden maar ik zoek even een verklaring.
Kan iemand mij een verklaring geven waarom juist ?



		$sql2 = 'INSERT INTO dvd';
		$sql2 .= ' ( naam, genre_id, foto, omschrijving, regisseur_id, speelduur )';
		$sql2 .= ' VALUES';
		$sql2 .= " ( '".$naam."', '".$genre_id."', '".$foto."', '".$omschrijving."', '".$regisseur_id."', '".$speelduur."' );";

		$result4 = mysql_query( $sql2 );

		$sql2 = 'INSERT INTO dvd';
		$sql2 .= ' ( naam, genre_id, foto, omschrijving, regisseur_id, speelduur )';
		$sql2 .= ' VALUES';
		$sql2 .= ' ( '.$naam.', '.$genre_id.', '.$foto.', '.$omschrijving.', '.$regisseur_id.', '.$speelduur.' );';

		$result4 = mysql_query( $sql2 );
?>
Sorry maar SQL is de wat mij betreft de uitzondering daar wel
"SELECT ....";
Dus " aan de buitenkant :)
OK Thx dat weet ik dan ook al weer.
Iemand enige verklaring waarom?

Ja sorry ik wil het graag goed leren.
met:


$sql2 .= " ( '".$naam."', '".$genre_id."', '".$foto."', '".$omschrijving."', '".$regisseur_id."', '".$speelduur."' );";


krijg je de volgende querie:


$sql2 .= " ( 'php', '1', 'oke.jpg', 'omschrijving', '4', '3 uur' );";


maar met:


$sql2 .= ' ( naam, genre_id, foto, omschrijving, regisseur_id, speelduur )';


krijg je de volgende querie


$sql2 .= " ( php, 1, oke.jpg, omschrijving, 4, 3 uur );";
Bij genre_id en regisseur_id heb ik de indruk dat het om INT's gaat. Verder heb ik je query wat versimpeld:
<?php
$sql2 = "
INSERT INTO dvd
( naam, genre_id, foto, omschrijving, regisseur_id, speelduur )
VALUES
('".$naam."', ".$genre_id.", '".$foto."', '".$omschrijving."', ".$regisseur_id.", '".$speelduur."')";
?>
Persoonlijk zou ik de query iets anders (lees: overzichtelijker) noteren:
<?php
$sql2 = "
INSERT INTO
dvd(
naam,
genre_id,
foto,
omschrijving,
regisseur_id,
speelduur
)
VALUES(
'".$naam."',
'".$genre_id."',
'".$foto."',
'".$omschrijving."',
'".$regisseur_id."',
'".$speelduur."'
);
";
?>
Zo loop je niet te kloten met diverse soorten quotes om de query en heb je niet 3, 4 x $sql2 = blabla nodig. Tevens is snel te zien hoeveel kolommen je hebt en hoeveel waardes je probeert weg te schrijven. Ook het aantal komma's is goed te zien, dit maakt de kans op fouten een stuk kleiner. Het debuggen zal in elk geval sneller gaan.

Edit: En wat Jan al zegt, wanneer je integers wegschrijft, horen daar geen quotes (enkele quotes ' ) om te staan.
@Frank: wat moet die puntkomma op regel 19?
Jan Koehoorn schreef op 12.06.2006 22:45
@Frank: wat moet die puntkomma op regel 19?
Daarmee sluit je de query af. Het is officieel de enige juiste manier om een query te beeindigen. Zelf gebruik ik ze nauwelijks, maar het zou eigenlijk wel zo netjes zijn.
@Jan: Bij de _id gaat het inderdaad om INT's die de user niet zelf kunnen intypen kiezen uit een dropdown menu.
Ja inderdaad bij uw versie is er iets minder typwerk dus ook minder kans op typfouten. Laat jij daarom de enkele quotes ook weg bij de _id, omdat het geen eigen input van user is ?

@PHP_Newbie: jouw uitleg snap ik niet compleet ?
@Frank: Okee bedankt, die syntax kende ik nog niet.
@ Redcrew: Waarom gebruik je enkele en dubbele Quotes Wil je dat weten?

Reageren