【问题标题】:PHP mysql table create doesn't work [closed]PHP mysql表创建不起作用[关闭]
【发布时间】:2012-09-19 06:48:32
【问题描述】:

PHP mysql 表创建不起作用! 为什么这段代码不起作用?

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db('allheight', $con);

$sql = 'CREATE TABLE Posts
(
PostID int NOT NULL AUTO_INCREMENT,
Title varchar(15),
Picture varchar(2000),
Description text,
Height text
)'; 


mysql_query($sql, $con);
mysql_close($con);
?>

这里的问题是代码似乎无法创建表“Posts”。

【问题讨论】:

  • MySQL 返回什么错误信息?
  • 你不应该再使用mysql_函数了。另外,请查看有关如何从 mysql-query 获取错误消息的手册。并做一些基本的调试,什么时候会发生什么,并给我们这些信息。
  • 在 MySQL 控制台或 phpMyAdmin 中尝试该 SQL 语句 - 让我们知道您遇到了什么错误。与您的说法相反,MySQL 的 CREATE TABLE 确实运行良好,并且已经使用了多年。
  • 回答您的问题 - 代码不起作用,因为您编码错误。如果你检查了你得到的错误,你就会知道你做错了什么。
  • 感谢 cmets 伙计们,现在我想通了。现在我知道,只要看看它,你就会知道为什么它不起作用。它缺少将 PostID 声明为表主键。感谢 Sirko

标签: php mysql create-table


【解决方案1】:

此 sql 查询产生以下错误:

表定义不正确;只能有一个自动列,并且必须定义为一个键。

将此添加到查询的末尾:

CREATE TABLE Posts
(
PostID int NOT NULL AUTO_INCREMENT,
Title varchar(15),
Picture varchar(2000),
Description text,
Height text,
KEY (PostID)
)

【讨论】:

    【解决方案2】:

    如果您查看了 MySQL 错误消息,就会很明显:​​

    1075 - 表定义不正确;只能有一个自动列,并且必须定义为一个键

    所以把你的 SQL 改成

    CREATE TABLE Posts (
    PostID int NOT NULL AUTO_INCREMENT,
    Title varchar(15),
    Picture varchar(2000),
    Description text,
    Height text,
    PRIMARY KEY(PostId)
    )
    

    【讨论】:

    • 或者只是在一个字符串中执行:PostId serial primary key.
    • 哎呀我的错。多亏了你,它不起作用,因为我无法将 postID 声明为主键(这是我想要做的)。很好的观察谢谢。对不起,我这么菜鸟。
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多