Ik heb een database waar ik een drietal tabellen wil aanmaken (mits ze nog niet bestaan). Dit wil ik via PDO doen, echter gebeurt er niks wanneer ik het script uitvoer. Wanneer ik data op wil vragen uit dezelfde database werkt het echter wel.
Dit is mijn code:
Ik heb zowel exec(), query() als execute() (met een prepared statement) geprobeerd, maar geen van allen werkt. Via google zie ik eigenlijk geen voorbeelden waarin men een tabel aanmaakt via PDO, maar het moet wel mogelijk zijn.
Ik heb tevens de SQL zelf getest in PHPMyAdmin en daar werkt de code gewoon, dus het ligt aan PDO. Er wordt overigens geen PDOException gegooid, de output blijft volledig leeg.
Waarom werkt DML SQL wel maar DDL SQL niet
Dit is mijn 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| /** * Connect to database through PDO and return connection object or error message */ public function dbConnect() { $dsn = "mysql:host=localhost;dbname=leon;"; // Dns, insert PDO driver here $username = "root"; // Database username, default 'root' $password = ""; // Database password, default null try { $con = new PDO($dsn, $username, $password, array(1002 => "SET NAMES utf8", PDO::ERRMODE_EXCEPTION)); // Set connection type to UTF-8 } catch (PDOException $e) { return 'Connection failed: ' . $e->getMessage(); } return $con; } /** * Create table if it doesn't exist yet */ public function createTable() { $con = $this->dbConnect(); try { $sql = " CREATE TABLE IF NOT EXISTS Poll ( id smallint(5) NOT NULL, question varchar(255) NOT NULL, PRIMARY KEY (id)) type=InnoDB; CREATE TABLE IF NOT EXISTS Answer ( id tinyint NOT NULL, answer varchar(255) NOT NULL, Pollid smallint(5) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (Pollid) REFERENCES Poll (id)) type=InnoDB; CREATE TABLE IF NOT EXISTS Vote ( id int(10) NOT NULL, ipaddress varchar(255) NOT NULL, Answerid tinyint NOT NULL, PRIMARY KEY (id), FOREIGN KEY (Answerid) REFERENCES Answer (id)) type=InnoDB;"; $con->query($sql); } catch (PDOException $e) { return 'Connection failed: ' . $e->getMessage(); } } |
Ik heb zowel exec(), query() als execute() (met een prepared statement) geprobeerd, maar geen van allen werkt. Via google zie ik eigenlijk geen voorbeelden waarin men een tabel aanmaakt via PDO, maar het moet wel mogelijk zijn.
Ik heb tevens de SQL zelf getest in PHPMyAdmin en daar werkt de code gewoon, dus het ligt aan PDO. Er wordt overigens geen PDOException gegooid, de output blijft volledig leeg.
Waarom werkt DML SQL wel maar DDL SQL niet