Johan West op 02/07/2015 11:05:53
OK in het vlg. script heb ik $col veranderd in $tab.
Het volgende is het probleem.
Ik kan met var_dump($tab) aantonen dat $tab gevuld is, maar niet binnen een bepaalde beslissingsconditie.
foreach($_POST['linkoms'] as $key => $dummy) {
$oms = $conn->real_escape_string($_POST['linkoms'][$key]);
$add = $conn->real_escape_string($_POST['linkadd'][$key]);
$sql = "INSERT INTO " . $tab . " (linkoms, linkadd) VALUES (`$oms`, `$add`)" ;
Dan geef ik je een prima werkende SQL lijn en dan ga je weer backticks gebruiken en dan nog wel om de values heen.
<?php
$sql = "INSERT INTO ".$tab." (linkoms, linkadd) VALUES ('".$oms."', '".$add."')";
// is hetzelfde als:
$sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')";
?>
In PHP, een string met "mijnstring" accepteerd variabelen en zet deze automatisch om.
Een string met 'mijnstring' (een litaral string) doet dat dus niet.
Aangezien VALUES in SQL moeten worden aangegeven met single quotes worden meestal toch double quotes gebruikt voor de complete SQL string dus maak er dan ook gebruik van.
<?php
// verbinding maken
// gegevens ophalen
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(isset($_POST['kolom2']) && ($tab = " " )){ // deze regel kan niet toegevoegd worden aan de vlg. if conditie
$tab = $_POST['kolom2'];
var_dump($tab); // deze var_dump wordt gewoon afgedrukt
echo gettype($_POST['linkoms']) // waarschijnlijk een string of integer.
echo gettype($_POST['linkadd']) // waarschijnlijk een string of integer.
if(isset($_POST['linkoms']) && (is_array($_POST['linkoms'])) && ($linkoms = " ") && isset($_POST['linkadd']) && (is_array($_POST['linkadd'])) && ($linkadd = " ")){
//hier wordt var_dump niet afgedrukt
// omdat deze "if" statement false is, dus voert hij het else gedeelte uit.
foreach($_POST['linkoms'] as $key => $dummy) {
$oms = $conn->real_escape_string($_POST['linkoms'][$key]);
$add = $conn->real_escape_string($_POST['linkadd'][$key]);
$sql = "INSERT INTO " . $tab . " (linkoms, linkadd) VALUES (`$oms`, `$add`)" ;
if($conn->query($sql) === TRUE){
echo "De links zijn toegevoegd aan de database. <br>$tab";
} else {
echo "Fout: " . " $sql " . " <br>" . $conn->error;
}
echo "<br>" . " tekst";
}
} else {
echo "<center>we wachten op uw invoer</center>";
}
}
}
?>
Toevoeging op 02/07/2015 15:06:05:
Johan K op 02/07/2015 14:39:20
[quote="Johan West op 02/07/2015 11:05:53"]
OK in het vlg. script heb ik $col veranderd in $tab.
Het volgende is het probleem.
Ik kan met var_dump($tab) aantonen dat $tab gevuld is, maar niet binnen een bepaalde beslissingsconditie.
foreach($_POST['linkoms'] as $key => $dummy) {
$oms = $conn->real_escape_string($_POST['linkoms'][$key]);
$add = $conn->real_escape_string($_POST['linkadd'][$key]);
$sql = "INSERT INTO " . $tab . " (linkoms, linkadd) VALUES (`$oms`, `$add`)" ;
Dan geef ik je een prima werkende SQL lijn en dan ga je weer backticks gebruiken en dan nog wel om de values heen.
<?php
$sql = "INSERT INTO ".$tab." (linkoms, linkadd) VALUES ('".$oms."', '".$add."')";
// is hetzelfde als:
$sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')";
?>
In PHP, een string met "mijnstring" accepteerd variabelen en zet deze automatisch om.
Een string met 'mijnstring' (een litaral string) doet dat dus niet.
Aangezien VALUES in SQL moeten worden aangegeven met single quotes worden meestal toch double quotes gebruikt voor de complete SQL string dus maak er dan ook gebruik van.
<?php
// verbinding maken
// gegevens ophalen
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(isset($_POST['kolom2']) && ($tab = " " )){ // deze regel kan niet toegevoegd worden aan de vlg. if conditie
$tab = $_POST['kolom2'];
var_dump($tab); // deze var_dump wordt gewoon afgedrukt
echo gettype($_POST['linkoms']) // waarschijnlijk een string of integer.
echo gettype($_POST['linkadd']) // waarschijnlijk een string of integer.
if(isset($_POST['linkoms']) && is_array($_POST['linkoms']) && $linkoms = " " && isset($_POST['linkadd']) && is_array($_POST['linkadd']) && $linkadd = " "){
//hier wordt var_dump niet afgedrukt
// omdat deze "if" statement false is, dus voert hij het else gedeelte uit.
foreach($_POST['linkoms'] as $key => $dummy) {
$oms = $conn->real_escape_string($_POST['linkoms'][$key]);
$add = $conn->real_escape_string($_POST['linkadd'][$key]);
$sql = "INSERT INTO " . $tab . " (linkoms, linkadd) VALUES (`$oms`, `$add`)" ;
if($conn->query($sql) === TRUE){
echo "De links zijn toegevoegd aan de database. <br>$tab";
} else {
echo "Fout: " . " $sql " . " <br>" . $conn->error;
}
echo "<br>" . " tekst";
}
} else {
echo "<center>we wachten op uw invoer</center>";
}
}
}
?>
[/quote]