在表单提交IF TABLE NOT EXIST上创建新的SQL表

时间:2011-08-14 19:43:25

标签: php sql forms mysql

我是php和SQL的新手,所以这可能是一个简单的问题,但我在网上找不到任何好的资料。

我正在尝试创建一个SQL表,当有人提交表单时,这是我到目前为止的

  include("dbstufflive.php");     
  $cxn = mysqli_connect($host,$user,$passwd,$dbname)
             or die("Couldn't connect to server");
     $sql = "CREATE TABLE IF NOT EXISTS `$company` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `company_name` varchar(80) NOT NULL,
  `contact` varchar(50) NOT NULL,
  `email` varchar(80) NOT NULL,
  `phone` varchar(13) NOT NULL,
  ... (long list of table data)
  `description` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ";
    mysqli_query($cxn,$sql); 

我当然会在这张桌子上做其他的事情,但我想我已经掌控了大部分内容。

问题是这个语句实际上并没有创建我的表:(当我按原样输入时,SQL语句在phpadmin中工作,并且当脚本运行时也没有错误。所以它经历了所有这些,以及更多,似乎工作,但表格根本没有出现。

如果需要,我可以提供更多代码,但我不想在此处粘贴更多代码。

提前感谢社区提供的任何帮助。

编辑: 我使用错误的DBinfo ...哇,我不是很聪明。

2 个答案:

答案 0 :(得分:2)

您的SQL语句看起来很好 - 从它的外观来看,您缺少登录凭据。一种有效的方法:

// Add this line
require_once('config.php');

// Then change the variables below to pull your credentials from that file.
$cxn = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD)
             or die("Couldn't connect to server");
     $sql = "CREATE TABLE IF NOT EXISTS `$company` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `company_name` varchar(80) NOT NULL,
  `contact` varchar(50) NOT NULL,
  `email` varchar(80) NOT NULL,
  `phone` varchar(13) NOT NULL,
  ... (long list of table data)
  `description` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ";
    mysqli_query($cxn,$sql); 

然后在同一目录中创建一个名为config.php的新文件。提交您的凭据:

<?php
    define('DB_HOST', 'localhost');
    define('DB_USER', 'username');
    define('DB_PASSWORD', 'your_password');
    define('DB_DATABASE', 'database_name');
?>

答案 1 :(得分:0)

你应该检查mysqli_query的结果(据我所知,它在失败时返回false)。有关详细信息,请参阅mysqli documentation,其中“创建表不返回结果集”,但成功/失败时为真/假。

示例:

if (!mysqli->query($cxn,$sql)) {
    printf("Error: %s\n", mysqli_error($cxn));
}