【问题标题】:how to create table and insert data inside it but if there is table already the same name just insert data and do not create table anymore如何创建表并在其中插入数据但是如果已经有同名的表只插入数据并且不再创建表
【发布时间】:2015-10-11 14:24:36
【问题描述】:

// 新问题

更新这个问题:

问这个问题的原因

我想在导航栏中创建一个按钮,其值为查看交易。 我想为每个客户创建特定的表格,以便轻松搜索其交易。

至于您的 cmets,我有一个想法,我将为所有客户创建 1 个表,使用 $_SESSION 保存并知道谁订购了一些东西。为了让当前用户查看他的交易历史,我还将使用 $_SESSION 来查看他的所有交易。问题是我不知道该怎么做。

//老问题

我正在创建一个在线订购系统,如果客户订购,它会将记录保存到 mysql 数据库。如果客户是新客户,当然它没有专门针对他的表,因此系统应该创建表并将数据插入表中。但是如果客户是老客户并且已经有一个专门的表,系统不必创建一个表,它会在里面插入记录。

示例:

当前登录客户是 $_SESSION 的 john base,他是新客户。 john 订单,但由于他是新客户,系统应该为 john 创建一个表并在表中插入记录。

那么下次john下单时,系统应该不再建表,直接在john的表中插入记录

你能帮我做这件事吗:)

【问题讨论】:

  • 你的数据结构完全坏了。您不应该为每个用户创建单独的表。
  • 我同意。架构是错误的。有一个与购买/订购表相关的客户表
  • @GordonLinoff 我正在使用带有 xampp 的 mysql 服务器

标签: php mysql sql


【解决方案1】:

将实体分开,并且不必每次都创建新的客户表。

或者检查这个小提琴http://sqlfiddle.com/#!2/6ed32/3

【讨论】:

  • 我应该如何把它放在编码中,例如当前登录用户是 abc 公司的 john,如果 john 订购了东西,系统会将记录保存在客户表中,其中有一列用户、公司名称、项目、订购日期。我想要做的是当约翰想要查看他的交易记录时,您只需点击查看交易,然后它将显示他的所有交易记录。那么我应该如何把它放在编码中
  • 检查我提供的小提琴作为起点,找出您将使用的选择语句。
【解决方案2】:

在 MySQL 中你可以使用IF NOT EXISTS

CREATE TABLE IF NOT EXISTS your_table_name ...;

INSERT INTO your_table_name ...

使用 SQL Server:

IF OBJECT_ID('your_table_name', 'U') IS NULL
  CREATE TABLE your_table_name ...;

INSERT INTO your_table_name ...;

警告:

为每个用户创建表是不好的做法。重新考虑您的方法并制作一张桌子。

来自The Curse and Blessings of Dynamic SQL:

创建表@tbl

这里的愿望是创建一个名称已确定的表 在运行时。

如果我们只看一下反对在存储中使用动态 SQL 的论点 程序,其中很少有真正适用于此。如果一个存储 过程中有一个静态 CREATE TABLE,运行 过程必须具有创建表的权限,因此动态 SQL 将 不改变任何东西。计划缓存显然与它无关。 等等。

然而:为什么?你为什么想做这个? 如果您正在创建 在您的应用程序中即时使用表格,您错过了一些 关于数据库设计的基础知识。在关系数据库中,集合 表和列的数量应该是恒定的。它们可能会改变 安装新版本,但不在运行时。

【讨论】:

  • 你的回答很合理,不值得一票否决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 2018-11-05
相关资源
最近更新 更多