【问题标题】:PHP MYSQL Insert Into one table from anotherPHP MYSQL 从另一个表插入一个表
【发布时间】:2012-12-05 05:08:00
【问题描述】:

我在这里和其他论坛上尝试了一堆灵魂,但总是出错。 这是当前使用 hostgator 和 PHP 5.2 的 PHP 代码

$insert = "INSERT INTO events (datecreated, fullname, email, title, url, picurl, desc, psw, skypeid, event) SELECT jvs.datecreated, jvs.fullname, jvs.email, jvs.title, jvs.url, jvs.picurl, jvs.desc, jvs.psw, jvs.skypeid, jvs.event FROM jvs";
if (! mysqli_query($dbh, $insert)  ||  mysqli_affected_rows($dbh) == 0)
            {
die ("<BR><BR><BR>Failed to insert data- " . mysqli_error($dbh));
            }

我得到的错误是:

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 'desc, psw, skypeid, event) SELECT jvs.datecreated, jvs.fullname, jvs.email, jvs.'在第 1 行

我已经检查了两个表中的每个字段,并且拼写正确并且文件都在那里。 事件表中的字段顺序不同,并且该表具有更多字段。 谢谢, 埃德

【问题讨论】:

标签: php mysql sql insert


【解决方案1】:

1.desc,desc是保留字,读作语句,必须加反引号。

2.您必须在两个查询(INSERT INTOSELECT)之间添加分隔符

3.你的VALUES在哪里,INSERT INTO必须包含VALUES

修复代码是:

$insert = "INSERT INTO events (`datecreated`, `fullname`, `email`, `title`, `url`, `picurl`, `desc`, `psw`, `skypeid`, `event`) VALUES('datecreated', 'fullname', 'email', 'title', 'url', 'picurl', 'desc', 'psw', 'skypeid', 'event');
SELECT jvs.datecreated, jvs.fullname, jvs.email, jvs.title, jvs.url, jvs.picurl, jvs.desc, jvs.psw, jvs.skypeid, jvs.event FROM jvs";
if (! mysqli_query($dbh, $insert)  ||  mysqli_affected_rows($dbh) == 0){
   die ("<BR><BR><BR>Failed to insert data- " . mysqli_error($dbh));
}

【讨论】:

  • 这是从一个表插入到另一个表,因此不使用值。看起来你把一切都反了。我想这将是一个好主意,以确保安全。只需将反引号放在 desc 周围就可以解决所有问题。谢谢。
  • 我试图将您的标记为已接受,但如果不取消选中其他答案,则不会。他先回答,所以我给了他接受。
  • 对不起...,我不知道 :)
【解决方案2】:

DESC 是 MySQL 保留关键字。您应该使用backtick 转义,例如

INSERT INTO tableName(......, `desc`, .....)
SELECT ...

【讨论】:

  • 想想自己谁是 JW,我以前从未见过的 46k? 但你是 Kuya John/John Woo。 :)
  • @MichaelBerkowski 改变我的名字并每 30 天通过是一种习惯。我不知道为什么。也许我病了。哈哈!
  • 谢谢。那工作得很好。很高兴我在这里问,否则我会花更多的时间来处理这个问题。
猜你喜欢
  • 2014-08-12
  • 2013-04-25
  • 2013-08-15
  • 2012-05-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多