我是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 ...哇,我不是很聪明。
答案 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));
}