2011-08-14 64 views
2

我是新来的PHP和SQL,所以这可能是一个简单的问题,但我无法在网上找到任何好的来源。在表单上创建新的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 ...哇,我不是很亮。

+0

当您在浏览器中运行你得到一个错误?你的登录凭证在哪里存储?从你提供的代码,它不显示你的$主机,$用户等被宣布为 – Zakman411

回答

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'); 
?> 
+0

我已经所有这一切,我只是不想发布它,但谢谢。我会编辑我的帖子,以便更明显 – Bullyen

+0

好吧,我是个白痴。我忘了我有两个不同的数据库(Live和Local),我使用了错误的... /手腕。 – Bullyen

+0

@james:哈哈它发生了。很高兴你把它修好了 – Zakman411

0

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

例如:

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

我做到了,我得到了“1”的回报,我认为这是真的。 – Bullyen

+0

如果有效,你应该找到你的桌子。如果没有,您可能不会使用您认为正在使用的数据库连接。 –

+0

是的。我使用了错误的DBinfo。我现在感觉非常愚蠢。 – Bullyen