2016-09-26 5 views
1

PDOを使用して実行しようとしているSQLコマンドがありますが、それはtrueを実行しますが、テーブルは作成されません。私は何が間違っているのか分かりません。誰かがこの問題を抱えているかどうかをインターネットで調べましたが、実際にはそれを修正するものは見つけられませんでした。ここではSQLコマンドPDOでテーブルを作成していません

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 
) 

があり、私はそれを実行しようとするとコマンドがPHPMyAdminので実行されますが、私はPDOを使用する場合、それは動作しません。私が使用しているコードは次のようになります:

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

常にtrueを返します。誰かが私を助けることができたら、私は本当にそれを感謝します!

+1

すべてのための 'varchar'?それは決して良い兆候ではありません... –

+0

あなたは正しいデータベースでそれを作成していますか?何かが文字通り真実であることをテストすることは、通常は冗長です。 – tadman

+0

これらのテーブルを非常に多く作成していることも非常に心配です。これは、通常、データベースの正規化にいくつかの作業が必要なサインです。 – tadman

答えて

0

は、最初の接続を設定します。次に

$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(); 

} 

クエリ:

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

このコードは動作しますが。あなたの$ tableId変数が期待値を持っていると確信していますか?そこにあるものを見るためにvar_dump($ tableId)する必要があります!

+1

ありがとう!これは機能します。テーブル値は数値でした。 – McStuffins

関連する問題