Vraagje omtrent insert functie
dit moet ik ondanks mijn studie in mijn eigen tijd doen om dat school hier niks van wil weten en het mij een betere manier van programeren lijkt dan dat ik op school krijg.
nu doet alleen mijn insert functie het niet, terwijl ik geen errors terug krijg iemand een suggestie?
code staat hier onder.
de insert functie.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
Public function insert(){
if(!$this->table) {die('geen tabel geselecteerd.');}
if(!$this->fields) {die('geen waardes geselecteerd.');}
$string='';
foreach($this->fields as $key=> $value){
$keys[] = $key;
$params[":".$key] = $value;
}
// opbouwen query.
$query = "INSERT INTO ".$this->table ." (";
$query .= join(", ", $keys);
$query .= ") VALUES (";
$query .= join(", ", array_keys($params));
$query .= ")";
$prep = $this->db->prepare($query);
$prep->execute($params);
}
?>
Public function insert(){
if(!$this->table) {die('geen tabel geselecteerd.');}
if(!$this->fields) {die('geen waardes geselecteerd.');}
$string='';
foreach($this->fields as $key=> $value){
$keys[] = $key;
$params[":".$key] = $value;
}
// opbouwen query.
$query = "INSERT INTO ".$this->table ." (";
$query .= join(", ", $keys);
$query .= ") VALUES (";
$query .= join(", ", array_keys($params));
$query .= ")";
$prep = $this->db->prepare($query);
$prep->execute($params);
}
?>
de rest.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
include_once('Database.php');
$db = new Database();
//het setten van de database gevens zodat je kan conecten.
$db->setServer('localhost');
$db->setUsername('root');
$db->setDatabase('test');
$db->setPassword('');
// connect.
$db->connect();
//table select.
$db->setTable('naw');
// setten van inputvelden
$db->setFields('naam', 'Ralph');
$db->setFields('naam', 'Kelly');
// uitvoeren insert query.
echo $db->insert();
?>
include_once('Database.php');
$db = new Database();
//het setten van de database gevens zodat je kan conecten.
$db->setServer('localhost');
$db->setUsername('root');
$db->setDatabase('test');
$db->setPassword('');
// connect.
$db->connect();
//table select.
$db->setTable('naw');
// setten van inputvelden
$db->setFields('naam', 'Ralph');
$db->setFields('naam', 'Kelly');
// uitvoeren insert query.
echo $db->insert();
?>
Daarnaast vind ik het nut van een eigen functie van een bestaande functie maken totale onzin. Gebruik gewoon de class van pdo i.p.v. jezelf beperkingen opleggen met je eigen class.
ik maak deze class omdat ik het wil begrijpen
Wat er fout gaat is echter niet te zeggen, omdat je zo te zien geen errorhandling hebt om het uitvoeren van je query.
hoe kan ik een degelijk error handling maken
dank je
Toevoeging op 26/05/2014 13:10:42:
heb hem werkend gekregen gaf een verkeerde naam mee XD
Offtopic: is Try & Catch een goede foutafhandeling?
hij staat er tussen en heeft mij geholpen de problemen op te lossen
de Try/catch methode kan gebruikt worden om fouten af te handelen. de Try/catch methode zelf is een methode om de fouten op te vangen waardoor de foutmelding nog niet op het scherm komt en je script niet direct afgebroken wordt.
Naar ik begrepen en ook gezien heb zijn er twee duidelijke stromingen in PHP land. De ene stroming gebruikt try/catch aan de lopende band en de andere stroming het liefst helemaal niet.
nu nog de joins toevoegen aan mijn insert functie.
iemand suggesties hoe ik dat kan oplossen?
Mvg ralph
kun je de complete class even als download aanbieden? dan kan ik hier wat testen
Zal hem zo wel ff op pastebin zetten
Toevoeging op 26/05/2014 23:09:29:
http://pastebin.com/kRWtUgX0 hier is de hele class maar is nog work in progress
Het enigste wat je moet doen is
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// eerste record
$db->setFields('naam', 'Ralph');
$db->insert();
//tweede record
$db->setFields('naam', 'Kelly');
$db->insert();
?>
// eerste record
$db->setFields('naam', 'Ralph');
$db->insert();
//tweede record
$db->setFields('naam', 'Kelly');
$db->insert();
?>
stel dat je tabel nu twee kolommen heeft bijvoorbeeld naam en email dan krijg je dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// eerste record
$db->setFields('naam', 'Ralph');
$db->setFields('email', '[email protected]');
$db->insert();
//tweede record
$db->setFields('naam', 'Kelly');
$db->setFields('email', '[email protected]');
$db->insert();
?>
// eerste record
$db->setFields('naam', 'Ralph');
$db->setFields('email', '[email protected]');
$db->insert();
//tweede record
$db->setFields('naam', 'Kelly');
$db->setFields('email', '[email protected]');
$db->insert();
?>
Toevoeging op 27/05/2014 00:00:15:
Denk nog even om je logica:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
public function setFields($fieldName, $fieldValue) {
$this->fields[$fieldName] = $fieldValue;
}
?>
public function setFields($fieldName, $fieldValue) {
$this->fields[$fieldName] = $fieldValue;
}
?>
Hoeveel fields 'set' je met deze functie? Maar één hé? Dan zou ik die s maar weghalen zodat het enkelvoud wordt
Code (php)
1
2
3
4
5
2
3
4
5
<?php
public function setField($fieldName, $fieldValue) {
$this->fields[$fieldName] = $fieldValue;
}
?>
public function setField($fieldName, $fieldValue) {
$this->fields[$fieldName] = $fieldValue;
}
?>
Toevoeging op 27/05/2014 00:01:28:
bijvoorbeeld in naw en test
Maar ik zou me daar voor een schoolopdracht niet aan wagen. hier wat leesvoer: http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql-pdo-mysqlnd