Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 如果表不存在,则在表单提交上创建新的SQL表_Php_Sql_Forms_Mysql - Fatal编程技术网

Php 如果表不存在,则在表单提交上创建新的SQL表

Php 如果表不存在,则在表单提交上创建新的SQL表,php,sql,forms,mysql,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 EXIST

我不熟悉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…哇,我不是很聪明。

您的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');
?>

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

例如:

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

您在浏览器中运行时是否遇到错误?您的登录凭据存储在哪里?从您提供的代码来看,它没有显示您的$host、$user等正在声明我已经拥有了所有这些,我只是不想发布它,但谢谢您。我将编辑我的帖子,这样更明显好,我是个白痴。我忘了我有两个不同的数据库(现场和本地)我用错了…/手腕。@james:哈哈,真的发生了。很高兴你修好了。我这么做了,我得到了“1”的回报,我认为这是真的。如果它有效,你应该找到你的表。如果没有,你可能不会使用你认为正在使用的数据库连接。