【问题标题】:MySQL table not creating when using php使用php时未创建MySQL表
【发布时间】:2014-08-21 10:23:16
【问题描述】:

所以,我正在尝试通过php 创建一个表。下面给出的是代码的一部分:

<?
    # db configurations
    define('DB_HOST',    '127.0.0.1:3306');
    define('DB_USER',    'root');
    define('DB_PASS',    'PWREMOVED');
    define('DB_NAME',    'poll2');

    # db connect
    function dbConnect($close=true){
      global $link;

      if (!$close) {
        mysql_close($link);
        return true;
      }

      $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Could not connect to MySQL DB ') . mysql_error();
      if (!mysql_select_db(DB_NAME, $link))
        return false;
    }

    $sql=CREATE TABLE `voting` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `username` varchar(45) NOT NULL,
      `fyrir` varchar(45) NOT NULL,
      `more` text NOT NULL,
      `vote` int(8) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    );

?>

运行此程序时,我的数据库没有任何反应。

【问题讨论】:

  • 运行您的语句,而不仅仅是它会在数据库中创建表。
  • 请直接在您的问题中添加代码
  • 您没有运行查询。
  • 注意:您正在使用的 mysql_* 函数已被弃用,并将在未来的 PHP 版本中删除。您不应该使用它们来编写新代码,而是使用mysqli_* 或 PDO。

标签: php mysql sql database


【解决方案1】:

您没有使用mysql_query() 执行mysql 查询。仅当您使用此功能时,查询才会被执行/运行。您还必须将查询括在引号内。

 $sql="CREATE TABLE `voting` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `username` varchar(45) NOT NULL,
      `fyrir` varchar(45) NOT NULL,
      `more` text NOT NULL,
      `vote` int(8) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    )";

mysql_query($sql);

【讨论】:

  • 仍然没有使用它。我正在使用 XAMPP 来托管网络服务器。我是通过 localhost/PATH 打开它来运行它,还是有其他奇特的方式来运行它?
  • 您还需要运行dbConnect() 函数。只是定义它不会连接到数据库。
  • 我做到了,什么都没有。
【解决方案2】:

添加 $sql 变量后,您必须在文件中调用 dbConnection 以打开数据库连接,然后添加:mysql_query($sql)。这意味着:

<?php
# db configurations
define('DB_HOST',    'localhost');
define('DB_USER',    'root');
define('DB_PASS',    'PWREMOVED');
define('DB_NAME',    'poll2');

# db connect
function dbConnect(){
    global $link;

    $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Could not connect to MySQL DB ') . mysql_error();
    if (!mysql_select_db(DB_NAME, $link))
    return false;
}


$sql="CREATE TABLE `voting` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `username` varchar(45) NOT NULL,
      `fyrir` varchar(45) NOT NULL,
      `more` text NOT NULL,
      `vote` int(8) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    )";
/* call dbConnect to open db connectioin */
dbConnect();
/* Execute the query */
if(!mysql_query($sql))
    die(mysql_error());
else
    echo 'table creation successful';

?>

但是,为什么不使用 OOP?它会让事情变得更容易。

【讨论】:

    【解决方案3】:

    您没有执行查询,查询字符串应包含在" 中尝试此代码" 添加:

    $sql="CREATE TABLE `voting` (
          `id` int(5) NOT NULL AUTO_INCREMENT,
          `username` varchar(45) NOT NULL,
          `fyrir` varchar(45) NOT NULL,
          `more` text NOT NULL,
          `vote` int(8) NOT NULL DEFAULT '0',
          PRIMARY KEY (`id`)
        )";
    

    执行mysql查询:mysql_query($sql) or die(mysql_error());

    你忘记调用dbConnect函数连接mysql:dbConnect();

    【讨论】:

    • 仍然没有使用它。我正在使用 XAMPP 来托管网络服务器。我是通过 localhost/PATH 打开它来运行它,还是有其他奇特的方式来运行它?
    • @leFluffFluffster 尝试使用localhost 而不是127.0.0.1:3306 DB_HOST
    • 使用 localhost 代替 127.0.0.1:3306 不起作用。
    • @leFluffFluffster 你调用了 dbConnect 函数吗?
    • 完整代码在 pastebin 链接中。我没有其他代码。
    猜你喜欢
    • 2014-02-25
    • 2017-07-09
    • 2019-06-01
    • 2023-03-31
    • 1970-01-01
    • 2013-03-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多