Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO创建表_Php_Pdo - Fatal编程技术网

Php 使用PDO创建表

Php 使用PDO创建表,php,pdo,Php,Pdo,我对php和这个论坛非常陌生,所以请原谅任何错误或错误的问题。 在我提供的代码中,我只是希望在DB“mydb”中创建一个表。我测试了与DB的连接(它可以工作)。这只是创建我有问题的表的过程。 如有任何意见或批评,将不胜感激。Thx <?php /* * * File: PDOcreateTabletcompany.php * By: Jay * Date: 24-10-13 * * This script createsTableintoDB

我对php和这个论坛非常陌生,所以请原谅任何错误或错误的问题。 在我提供的代码中,我只是希望在DB“mydb”中创建一个表。我测试了与DB的连接(它可以工作)。这只是创建我有问题的表的过程。 如有任何意见或批评,将不胜感激。Thx

<?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

你有什么错误吗?您应该回显else语句中的
$db->errorInfo()
,查看是否存在任何sql错误。向PDO询问错误:我建议打开查询日志。这样,您就可以知道服务器上正在执行的确切查询。非常感谢你的回答。我会从中学到很多东西。我非常感谢您的快速回复。sir@david如何使用php-pdo创建多个表?只需按照示例中的方式创建每个表即可。我不会试图一次创建多个表。这正是我所需要的!谢谢我需要检查表是否存在,如果可能的话,我不想重新创建它?