PHP MySQL (PDO) CREATE TABLE erstellt keine Tabellen (und in der Tat, nichts macht)

Ich kämpfen seit heute morgen versucht zu schreiben ein install.php Datei legen Sie drei leere Tabellen (Benutzer, Sitzungen, Beiträge) in eine Datenbank. Der SQL code, den ich verwende, ist gültig, wenn ich es injizieren mit PHPMyAdmin, aber anscheinend so wie ich es im Umgang mit PHP ist falsch, denn wenn ich mein install.php Datei meine Datenbank bleibt leer. Hier ist mein code:

<?php
try {
 $con = new PDO('mysql:host=omitted;dbname=omitted','omitted','');
 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
 $q="CREATE TABLE posts (
  title varchar(150) NOT NULL,
  body text NOT NULL,
  created varchar(100) NOT NULL,
  user varchar(40) NOT NULL,
  id int(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  UNIQUE KEY id (id)
  ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

  CREATE TABLE sessions (
  session_id varchar(40) NOT NULL,
  data text NOT NULL,
  last_activity int(11) NOT NULL,
  PRIMARY KEY (session_id)
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

  CREATE TABLE users (
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(40) NOT NULL,
  password varbinary(250) NOT NULL,
  email varchar(40) NOT NULL,
  salt varchar(20) NOT NULL,
  name varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (id),
  UNIQUE KEY email (email),
  UNIQUE KEY username (username),
  UNIQUE KEY id (id)
  ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ";

 $stmt = $con->prepare($q);
 $stmt->execute();
 echo "success";

} catch (PDOException $e) {
 $e->getMessage();
}


?>

Gehe ich davon aus, dass es einen BLÖDEN Fehler meinerseits (da meine letzten 3 Kopfschmerzen wurden auch Recht albern), aber in diesem moment kann ich wirklich nicht herausfinden. Irgendwelche Ideen?

  • Können Sie versuchen, "CREATE TABLE '1165176_cms.sessions"...
  • die zugrunde liegende mysql-Treiber in php nicht erlaubt, mehrere Abfragen in einer einzigen ->query()-Typ call wie eine sql-injection-Angriff-Verteidigung-Mechanismus. während es doesn ' T stop alle injection-Angriffe, er verhindert die klassische bobby tables-Typ angreifen.
Schreibe einen Kommentar