PHP/MYSQL is vrij onlogisch in het toepassen van quotes, double qoutes en backticks zoals " ' ` .

Als ik CREATE TABLE `$var` doe dan werkt dat, maar bij een andere query zoals INSERT INTO niet.

Ik krijg de volgende foutmelding


Fout:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''.` `.' (linkoms, linkadd) VALUES ( 'aaa', 'http://www.aa.com' )' at line 1
zijn toegevoegd aan de database (regel 2)


als gevolg van deze code


$sql = "INSERT INTO '.`$col`.' (linkoms, linkadd) VALUES (  '". $conn->real_escape_string($_POST['linkoms'][$key]) ."', 
  '". $conn->real_escape_string($_POST['linkadd'][$key]) ."' )";




Iemand enig idee hoe $col in een INSERT INTO query zou moeten?
Ivo P op 03/07/2015 11:11:06


isset() is zo'n functie.
vertaald: bestaat()

dus if( isset($a) )

Als $a bestaat, dan levert isset() true op.

Gezien vanuit de if() staat er dan if( TRUE )


en je kunt een hele ketting van al dan niet geneste functies plaatsen tussen de haakjes van if(), maar uiteindelijk moet het iets worden dat voor PHP is terug te leiden tot

if(true) of if(false).



En moet $a dan tussen de accolades staan?
nee, tussen de haakjes.
De accoloades, dus { en }, staan om een code blok

<?php
$a = 10;
$a = true;
$a = date();
$a = is_file('/tmp/abc.txt');

if($a) {
echo 'ja';
}
else {
echo 'nee';
}
?>
Misschien (nog eens) helemaal opnieuw bij de basis van php / mysqli (/pdo) beginnen?!

Ik krijg nu het idee dat je iets wilt gaan maken, maar nog niet (voldoende) kennis van de beginselen hebt.
bv http://www.phptuts.nl/view/39/
OK maar zit er een relatie tussen de melding: Undefined Index en het instellen van een if voorwaarde?



Toevoeging op 04/07/2015 09:22:05:

Ik begin eigenlijk steeds meer het idee te krijgen dat het probleem ergens anders ligt nl. bij de mysql query.

De query is nu als volgt:


 $sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')" ;


Kan het zijn dat een van jullie weet of voor MYSQL tabel variabelen soms meer commandos nodig zijn als je PHP gebruikt om de database aan te sturen?
Oef Johan. Neem een bak koffie. Ga rustig achterover leunen, handen in de nek en creëer jezelf een beeld van een mini internet met drie computers:
- een web/php server
- een mysql server
- een client (browser/gebruiker)

De drie hebben NIETS MET ELKAAR te maken

Ze kunnen alleen commando's uitvoeren.
Dus als PHP het SQL commando goed in elkaar knutselt dan werkt dat commando gewoon.

Je kunt de SQL laten echo-en en daarna in de browser selecteren en kopiëren.
Vervolgens kun je dat commando in phpMyAdmin onder de SQL tab plakken en dan moet dat gewoon werken.
Bovendien kun je dan direct zien wat voor resultaat-set je van MySQL terug krijgt.

Dat is gewoon een leerzame test en helpt je PHP problemen te scheiden van SQL problemen.


Johan West op 04/07/2015 08:52:01

OK maar zit er een relatie tussen de melding: Undefined Index en het instellen van een if voorwaarde?

Ja, als je een variabele een beginwaarde geeft in een if-blok kan dit in sommige gevallen leiden tot het niet bestaan van een variabele. Dit hangt af van hoe je je variabelen initialiseert.

Eerst moet je snappen hoe if-statements werken. Dit heeft Ivo P hierboven al prima uitgelegd.

Als je zoiets doet:
<?php
if (1 == 2) {
    $test = 'hoi';
} else {
    $something = 'lala';
}
?>

Dan zal alleen $something na afloop van dit if-statement bestaan want de conditie "1 == 2" zal nooit waar zijn (of anders gezegd, nooit evalueren tot true).

Het is altijd beter om variabelen die je hoe dan ook gaat gebruiken een zinnige initiële waarde te geven, of voordat je deze gaat gebruiken te controleren of deze een (zinnige) waarde hebben gekregen.

Waarschijnlijk is het handiger als je even een stapje terug doet en je je verdiept in boolse expressies (oftewel: statements die enkel true of false kunnen opleveren).

Dit heeft overigens niet specifiek iets te maken met MySQL.

Scheid, zoals Frank zegt, je problemen, als je deze op één hoop gooit (in één topic) dan is dit alleen maar verwarrender. Zowel voor jou als andere lezers.
Misschien kunnen jullie een opsomming geven van de verschillende if condities die er zijn of weet je een goede tutorial erover?

Ik heb al een vrij groot scala aan mogelijkheden geprobeerd.


if (($_POST['kolom2'] == TRUE) && ($tab == TRUE ) ) 
if (($_POST['kolom2'] == " " ) && ($tab == " "))
if (isset ($_POST['kolom2']) && isset ($tab))
if (!isset ($_POST['kolom2']) && !isset ($tab))
if (!empty ($_POST['kolom2']) && !empty ($tab))
if (empty ($_POST['kolom2']) && empty ($tab))
if  ($_POST['kolom2'] !== " " ) && ($tab !== " " ))




Is het normaal dat je maar iets blijft proberen of is er ook een logica te vinden of zo'n conditie in te stellen?

Het kan ook zijn dat er nog condities zijn die ik niet ken.
<?php
if (($_POST['kolom2'] == TRUE) && ($tab == TRUE ) ) 
?>

kan ook :
<?php
if (($_POST['kolom2']) && ($tab) )
?>

Voor false:
<?php
if ((!$_POST['kolom2']) && (!$tab) ) 
?>
Je moet gewoon weten wat je van een functie verwacht, is het een boolean (true/false) of een string of misschien een integer, of zelfs een array.

Om te controleren of iets ingevuld is, gebruik ik dit altijd:
<?php
if(trim($var)=='') {
// leeg
}
?>
Een $_POST['....']-waarde zal nooit een boolean zijn. (true/false)

Reageren