2013-10-24 14 views
8

Sono molto nuovo su php e questo forum, quindi scusate eventuali errori o domande fuori posto. Nel codice che ho fornito, sto solo cercando di creare una tabella nel DB "mydb". Ho testato la connessione al DB (funziona). È solo la creazione del tavolo con cui sto avendo problemi. Qualsiasi consiglio o critica sarebbe apprezzato. ThxUtilizzo di PDO per CREATE TAVOLA

<?php 
/* 
* 
* File:   PDOcreateTabletcompany.php 
* By:   Jay 
* Date:  24-10-13 
* 
* This script createsTableintoDB 
* 
*==================================== 
* 
*/ 
try { 
    $db = new PDO("mysql:dbname=mydb;host=localhost", "root", ""); 
} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
$table= "tcompany"; 
$columns = "ID INT(11) AUTO_INCREMENT PRIMARY KEY, Prename VARCHAR(50) NOT NULL, Name VARCHAR(250) NOT NULL, 
StreetA VARCHAR(150) NOT NULL, StreetB VARCHAR(150) NOT NULL, StreetC VARCHAR(150) NOT NULL, 
County VARCHAR(100) NOT NULL, Postcode VARCHAR(50) NOT NULL, Country VARCHAR(50) NOT NULL " ; 


$createTable = $db->exec("CREATE TABLE IF NOT EXISTS mydb.$table ($columns)"); 

if ($createTable) 
{ 
    echo "Table $table - Created!<br /><br />"; 
} 
else { echo "Table $table not successfully created! <br /><br />"; 
} 
?> 
+0

State ottenendo eventuali errori? Dovresti echo '$ db-> errorInfo()' nell'istruzione else per vedere se ci sono errori sql. –

+1

Chiedi a PDO l'errore: http://stackoverflow.com/tags/pdo/info –

+1

Ti consiglio di attivare il registro delle query. In questo modo si conosce la query esatta che si sta eseguendo sul server. http://stackoverflow.com/questions/6479107/how-to-enable-mysql-query-log – user1647708

risposta

30

Poiché nessuna riga sono colpiti durante la creazione di tabella $ CreateTable restituisce 0 vedere manual

PDO::exec() returns the number of rows that were modified or deleted by the SQL statement you issued. If no rows were affected,PDO::exec() returns 0.

Come si crea una tabella che si sarà esente da SQL injection se i vostri nomi delle colonne sono codificati duro (come nel codice qui sotto). Ho lasciato $table = "tcompany"; come si desidera stampare tabella creata (vorrei lasciare fuori io stesso)

Ho aggiunto error-handling che mostrerà tutti gli errori in try blocco.

$table = "tcompany"; 
try { 
    $db = new PDO("mysql:dbname=mydb;host=localhost", "root", ""); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Error Handling 
    $sql ="CREATE table $table(
    ID INT(11) AUTO_INCREMENT PRIMARY KEY, 
    Prename VARCHAR(50) NOT NULL, 
    Name VARCHAR(250) NOT NULL, 
    StreetA VARCHAR(150) NOT NULL, 
    StreetB VARCHAR(150) NOT NULL, 
    StreetC VARCHAR(150) NOT NULL, 
    County VARCHAR(100) NOT NULL, 
    Postcode VARCHAR(50) NOT NULL, 
    Country VARCHAR(50) NOT NULL);" ; 
    $db->exec($sql); 
    print("Created $table Table.\n"); 

} catch(PDOException $e) { 
    echo $e->getMessage();//Remove or change message in production code 
} 

NOTA in risposta al commento uso

CREATE TABLE IF NOT EXISTS 
+0

Grazie mille per la risposta. Potrò imparare molto da esso. Apprezzo molto la risposta veloce. –

+0

signore @david come è possibile creare più tabelle utilizzando php pdo? –

+0

Basta creare ciascuna tabella come nell'esempio. Non proverei a creare più di un tavolo alla volta. –

Problemi correlati