【问题标题】:insert data from select query results and adding a new column从选择查询结果中插入数据并添加新列
【发布时间】:2016-01-25 11:30:55
【问题描述】:

我已经在网站上阅读了类似的问题。但我仍然无法找出问题所在。我想将数据从表“main”复制到表“metro”并再添加一列。但该语句没有运行,也没有错误提示。

$s_id=crypt($myid);
$result = mysqli_query($link, "INSERT INTO users (username, password, s_id, email, dob) VALUES ('$myid', '$mypw', '$s_id', '$email', STR_TO_DATE('$dob', '%d/%m/%Y'));");
$result = mysqli_query($link, "SELECT user_id FROM users WHERE username='$myid'");
$row = mysqli_fetch_array($result,MYSQLI_BOTH);
$user_id=$row["user_id"];
//below is the statment which can't be perform.
$result = mysqli_query($link, "INSERT INTO metro (ID, Row, Column, Caption, link, Ico, Size, Color, user_id) SELECT ID, Row, Column, Caption, link, Ico, Size, Color, '$user_id' FROM main");

“主”表只有字段 (ID,Row,Column,Caption,link,Ico,Size,Color)
表“metro”只有上述字段和字段(user_id) 我试图运行 statment
INSERT INTO...
在 phpmyadmin 中 错误消息显示“#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法以使用 near
'Column, Caption, link, Ico, Size, Color, user_id) SELECT ID, Row, Column, Captio' at line 1"
我想知道字段名称RowColumn 是否是关键字。这两个词的颜色变成了红色。

【问题讨论】:

  • 你得到什么错误?
  • 我只发现“metro”表没有更新。该网页没有任何错误消息。一些帖子推荐使用函数 bindParm。但我使用程序风格。我不明白如何为 bindParm 编写程序样式。似乎 bindParm 非常复杂。状态:可以更新“用户”表。可以分配 $row["user_id]"。但“地铁”表没有改变。
  • 请帮忙投票。非常感谢。

标签: mysql sql select insert


【解决方案1】:

至少在ANSI SQL中rowcolumn是保留字,所以这些列名需要用双引号分隔为"Row""Column"

INSERT INTO metro (ID, "Row", "Column", Caption, link, Ico, Size, Color, user_id)
SELECT ID, "Row", "Column", Caption, link, Ico, Size, Color, '$user_id' FROM main

也许 MySQL 想要反引号而不是双引号?

【讨论】:

  • 我只是将字段名称“Row”更改为“myRow”,将“Column”更改为“myCol”。但还是不行。然后,我尝试在 phpmyAdmin 中运行 SQL。错误消息显示 ID 是唯一的(因为表“metro”已经具有与主表相同的数据)。现在我正在寻找取消“ID”唯一性的方法。之后好像就没事了。
  • 谢谢大家。在我删除 ID 作为主键和索引之后。可以运行 INSERT 语句。
  • @jarlh 如果你有机会,我遇到了插入查询的问题:stackoverflow.com/questions/34989107/…
  • @user2363025,对不起,我不知道 php(或其他什么...)。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多