Использование PDO для CREATE TABLE

Я очень новичок в php и на этом форуме, поэтому, пожалуйста, извините любые ошибки или неуместные вопросы. В коде, который я предоставил, я просто ищу СОЗДАТЬ таблицу в БД «mydb». Я тестировал соединение с БД (он работает). Это просто создание таблицы, с которой возникают проблемы. Любые советы или критические замечания будут оценены. Спасибо

<?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 />"; } ?> 

Поскольку никакие строки не влияют при создании таблицы $ createTable возвращает 0, см. Руководство

PDO :: exec () возвращает количество строк, которые были изменены или удалены выданной вами операцией SQL. Если никакие строки не были затронуты, PDO :: exec () возвращает 0.

Когда вы создаете таблицу, вы будете свободны от SQL-инъекций, если имена столбцов жестко закодированы (как в приведенном ниже коде). Я оставил $table = "tcompany"; как вы хотите напечатать таблицу, созданную (я бы сам ее оставил)

Я добавил ошибку обработки, которая будет показывать любые ошибки в блоке try .

 $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 } 

ПРИМЕЧАНИЕ в ответ на использование комментариев

 CREATE TABLE IF NOT EXISTS