Volledige versie bekijken : php + mysql insert into + aanhalingstekens
BlackAdder
%Europe/Berlin %729 %2007, 18:29
Dag flashers,
Ik loop hier al eventjes mee te prutsen, ik moet een aantal variabelen in een MySQL database plaatsen en wil dit met onderstaande regel doen:mysql_query("INSERT INTO Producten (code, group, subgroup, ".$field_1.", ".$field_2.") VALUES ('".$code."', '".$group."', '".$subgroup."', '".$name."', '".$text."')");Ik heb al gezocht op google en flashfocus, etc. Volgens mij zit het probleem in de aanhalingstekens, en dan vooral bij de variabelen bij de toewijzing van de kolommen (het eerste gedeelte tussen haakjes dus).
Maar dit pakt hij niet. Ik kan nergens een oplossing vinden, of iets van een foutje, hoop dat iemand mij kan aangeven of ik hier goed bezig ben. Zo niet zou een correctie ook wel fijn zijn ;)
Alvast bedankt natuurlijk!
Groeten, Nils
Zaxs
%Europe/Berlin %807 %2007, 20:22
Je kunt onmogelijk een variabele kolom hebben, dus ".$field_1.", ".$field_2." kan onmogelijk. Je zult 2 kolommen moeten aanmaken met de namen 'field1' en 'field2' of iets dergelijks want het is onmogelijk om bij lijn 1 de kolommen 'a' en 'b' te noemen terwijl bij lijn 2 die kollomen opeens 'c' en 'd' heten.
Ik hoop dat ik zo een beetje duidelijk ben.
Kolommen zijn dus vooraf vastgeseld in je MySQL server, wat je per rij in die kolomen gooit mag je zelf uitzoeken.
BlackAdder
%Europe/Berlin %817 %2007, 20:36
Je kunt onmogelijk een variabele kolom hebben, dus ".$field_1.", ".$field_2." kan onmogelijk. Je zult 2 kolommen moeten aanmaken met de namen 'field1' en 'field2' of iets dergelijks want het is onmogelijk om bij lijn 1 de kolommen 'a' en 'b' te noemen terwijl bij lijn 2 die kollomen opeens 'c' en 'd' heten.
Ik hoop dat ik zo een beetje duidelijk ben.
Kolommen zijn dus vooraf vastgeseld in je MySQL server, wat je per rij in die kolomen gooit mag je zelf uitzoeken.Bedankt voor je antwoord! Het is ook niet zo dat de kolommen variabel zijn, ik wil deze alleen variabel aanroepen. Die kolommen zijn inderdaad al aangemaakt.
Als voorbeeld kun je bijvoorbeeld denken aan een engelse tekst en een vertaling daarvan. De ene keer moet deze via php in de kolom 'text_en' worden geplaatst en de andere keer in de kolom 'text_nl'.
Is dit werkelijk onmogelijk, om variabel aan te geven in welke kolom deze informatie moet worden opgeslagen? Kan het me bijna niet voorstellen..
Zaxs
%Europe/Berlin %829 %2007, 20:54
Het is wel mogelijk, maar wat zijn de namen van je kolomen? Die namen moet je gewoon in de query zetten.
Is het niet veel handiger om 2 tabellen, producten_en en producten_nl te maken, of de producten 2 talig toe te voegen, zoiets als dit:
mysql_query("INSERT INTO `producten` (`code`, `group`, `subgroup`, `name_nl`, `text_nl`, `name_en`, `text_en`) VALUES ('".$code."', '".$group."', '".$subgroup."', '".$name_nl."', '".$text_nl."', '".$name_en."', '".$text_en."')");
BlackAdder
%Europe/Berlin %928 %2007, 23:17
Het is wel mogelijk, maar wat zijn de namen van je kolomen? Die namen moet je gewoon in de query zetten.
Is het niet veel handiger om 2 tabellen, producten_en en producten_nl te maken, of de producten 2 talig toe te voegen, zoiets als dit:
mysql_query("INSERT INTO `producten` (`code`, `group`, `subgroup`, `name_nl`, `text_nl`, `name_en`, `text_en`) VALUES ('".$code."', '".$group."', '".$subgroup."', '".$name_nl."', '".$text_nl."', '".$name_en."', '".$text_en."')");Ik heb het op deze manier aangepast inderdaad, het komt eigenlijk op hetzelfde neer. Maar het probleem zit m blijkbaar toch ergens anders. Blijkbaar kan het onderstaande niet (heb even een voorbeeldje gemaakt)function sla_op(){
$sql="INSERT INTO Test_table VALUES ('test')";
if (!mysql_query($sql,$con)){
die('Error: ' . mysql_error());
}
}
sla_op();Je kan geen mysql query oproepen binnen een functie? Of moet ik die dan buiten de functie declareren?
Als ik dat doe krijg ik de foutmelding "Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/*****.php on line 54"
In ieder geval bedankt voor het antwoorden! Hoop dat jij, of een ander op deze laatste vraag ook een antwoord hebt..
josko
%Europe/Berlin %933 %2007, 23:24
$con zit niet in de scope van de functie :) je zou $con als argument mee kunnen geven, dan moet hij het doen:
function sla_op ($arg) {
$sql="INSERT INTO Test_table VALUES ('test')";
if (!mysql_query($sql,$arg)){
die('Error: ' . mysql_error());
}
}
sla_op ($con);
BlackAdder
%Europe/Berlin %293 %2007, 08:02
$con zit niet in de scope van de functie :) je zou $con als argument mee kunnen geven, dan moet hij het doen:
function sla_op ($arg) {
$sql="INSERT INTO Test_table VALUES ('test')";
if (!mysql_query($sql,$arg)){
die('Error: ' . mysql_error());
}
}
sla_op ($con);Ah, stom.. 8~ .. iets wat ik toch zelf wel had moeten kunnen ontdekken |) Enfin, het werkt nu inderdaad. Bedankt voor de hulp!
Voetsjoeba
%Europe/Berlin %585 %2007, 15:03
Vergeet ook niet om altijd mysql_real_escape_string (http://be2.php.net/manual/en/function.mysql-real-escape-string.php) rond de variabelen die je in je query gebruikt te gooien, anders heb je binnen de kortste keren SQL injections en foutieve queries aan je been omdat je geen quotes en andere query-unsafe characters escapet.
mech7
%Europe/Berlin %603 %2007, 15:29
Vergeet ook niet om altijd mysql_real_escape_string (http://be2.php.net/manual/en/function.mysql-real-escape-string.php) rond de variabelen die je in je query gebruikt te gooien, anders heb je binnen de kortste keren SQL injections en foutieve queries aan je been omdat je geen quotes en andere query-unsafe characters escapet.
Vergeet dan ook niet om te checken op magic_quotes en alle slashes te strippen.. anders eindig je met dubele slashes in je database :)
Zaxs
%Europe/Berlin %930 %2007, 23:19
Oeh, ik gebruikte altijd addslashes, maar mysql_real_escape_string is veel veiliger. Die kende ik nog niet. ;) Dankje!
BlackAdder
%Europe/Berlin %961 %2007, 00:04
ik zal niet vergeten =)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.