2016-09-26 5 views
1

Ich habe einen SQL-Befehl, den ich versuche, mit PDO auszuführen und es führt wahr, aber die Tabelle wird nicht erstellt. Ich habe keine Ahnung, was ich falsch mache. Ich schaute mich im Internet um, um zu sehen, ob jemand anderes dieses Problem hatte, aber ich schien wirklich nichts zu finden, was es behebt. Hier ist der SQL-BefehlKeine Tabelle mit PDO erstellen

CREATE TABLE table_230 
(
    id VARCHAR(255), 
    cost VARCHAR(255), 
    title VARCHAR(255) NOT NULL, 
    package_quantity VARCHAR(255) NOT NULL, 
    package_cost VARCHAR(255) NOT NULL, 
    asin VARCHAR(15) NOT NULL, 
    rank VARCHAR(20) NOT NULL, 
    category VARCHAR(255) NOT NULL, 
    bb_price VARCHAR(255) NOT NULL, 
    seller_type VARCHAR(255) NOT NULL, 
    size_tier VARCHAR(255) NOT NULL, 
    amazon_fee VARCHAR(255) NOT NULL, 
    roi VARCHAR(255) NOT NULL, 
    parent_asin VARCHAR(255) NOT NULL, 
    complete TINYINT(1) DEFAULT 0 
) 

Der Befehl wird ausgeführt in phpMyAdmin, wenn ich es auszuführen versuchen, aber es funktioniert nicht, wenn ich PDO verwenden. Der Code, den ich verwende, sieht so aus:

$create = $this->dbConnection->prepare(" 
     CREATE TABLE IF NOT EXISTS table_" . $tableId ." 
     (
      id VARCHAR(255), 
      cost VARCHAR(255), 
      title VARCHAR(255) NOT NULL, 
      package_quantity VARCHAR(255) NOT NULL, 
      package_cost VARCHAR(255) NOT NULL, 
      asin VARCHAR(15) NOT NULL, 
      rank VARCHAR(20) NOT NULL, 
      category VARCHAR(255) NOT NULL, 
      bb_price VARCHAR(255) NOT NULL, 
      seller_type VARCHAR(255) NOT NULL, 
      size_tier VARCHAR(255) NOT NULL, 
      amazon_fee VARCHAR(255) NOT NULL, 
      roi VARCHAR(255) NOT NULL, 
      parent_asin VARCHAR(255) NOT NULL, 
      complete TINYINT(1) DEFAULT 0 
     )"); 
if($create->execute() === true) 
{ 
    return true; 
} 

Es gibt immer wahr zurück. Wenn mir jemand helfen könnte, würde ich es sehr schätzen!

+1

'varchar' für alles? Das ist nie ein gutes Zeichen ... –

+0

Sind Sie sicher, dass Sie es in der richtigen Datenbank erstellen? Auch zu testen, dass etwas im wahrsten Sinne des Wortes wahr ist, ist normalerweise überflüssig. – tadman

+0

Es ist auch sehr beunruhigend, dass Sie so viele dieser Tabellen erstellen. Das ist normalerweise ein Zeichen dafür, dass Ihre Datenbanknormalisierung etwas Arbeit benötigt. – tadman

Antwort

0

Ihre Verbindung zuerst ein:

$mysql_host = "servername"; 
$mysql_database = "dbname"; 
$mysql_user = "username"; 
$mysql_password = "pass"; 


try{ 
$conn = new PDO(
"mysql:dbname=" . $mysql_database . 
";host=" .   $mysql_host  . 
";charset=utf8"   , 
$mysql_user    , 
$mysql_password   , 
array(     // 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" 
    ) 
); 

}catch(PDOException $e){ 
echo $e->getCode(); 

} 

Dann query:

$tableId=$conn->lastInsertId(); 
$create = $conn->prepare(" 
    CREATE TABLE IF NOT EXISTS table_" . $tableId ." 
    (
     id VARCHAR(255), 
     cost VARCHAR(255), 
     title VARCHAR(255) NOT NULL, 
     package_quantity VARCHAR(255) NOT NULL, 
     package_cost VARCHAR(255) NOT NULL, 
     asin VARCHAR(15) NOT NULL, 
     rank VARCHAR(20) NOT NULL, 
     category VARCHAR(255) NOT NULL, 
     bb_price VARCHAR(255) NOT NULL, 
     seller_type VARCHAR(255) NOT NULL, 
     size_tier VARCHAR(255) NOT NULL, 
     amazon_fee VARCHAR(255) NOT NULL, 
     roi VARCHAR(255) NOT NULL, 
     parent_asin VARCHAR(255) NOT NULL, 
     complete TINYINT(1) DEFAULT 0 
    )"); 
if($create->execute() === true) 
{ 
return true; 
} 

Dieser Code funktioniert. Sind Sie sicher, dass Ihre $ tableId-Variable den erwarteten Wert hat? Sie sollten var_dump ($ tableId) sehen, was drin ist!

+1

Danke! Das funktioniert. Der Tabellenwert war eine Zahl. – McStuffins