2016-01-25 2 views
0

Я уже прочитал аналогичный вопрос на веб-сайте. но я до сих пор не могу найти проблему. Я хотел бы скопировать данные из таблицы «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)
В таблице «метро» только имеют выше поля и поля (user_id) Я попытался запустить Постулаты
INSERT INTO...
в PHPMyAdmin сообщение об ошибке показывает «# 1064 - У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования около
'Column, Caption, link, Ico, Size, Color, user_id) SELECT ID, Row, Column, Captio' at line 1"
Интересно, является ли поле и Column ключевым словом. Цвет этих двух слов становится красным.

+0

какая ошибка вы получаете? – sagi

+0

Я только нашел таблицу «метро» не обновляю. на веб-странице нет сообщения об ошибке. Некоторые сообщения рекомендуют использовать функцию bindParm. но я использую процедурный стиль. Я не понимаю, как писать процедурный стиль для bindParm. Кажется, bindParm очень сложны. Статус: Таблица «пользователи» может быть обновлена. $ row ["user_id]" может быть назначено. но таблица «метро» не изменилась. –

+0

Пожалуйста, вернитесь вверх. Большое спасибо. –

ответ

1

По крайней мере, в ANSI SQL row и column являются зарезервированными словами, поэтому эти имена столбцов должны быть в двойных кавычках, как "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 хочет обратно-тики вместо двойных кавычек ?

+0

Я просто изменил название поля «Row» на «myRow» и «Column» на «myCol». но это все еще не нормально. , тогда я пытаюсь запустить SQL в phpmyAdmin. идентификатор сообщения об ошибке является уникальным (поскольку в таблице «метро» уже есть данные, которые аналогичны основным). теперь я нахожу метод, чтобы отменить «ID» быть уникальным. похоже, после этого может быть хорошо. –

+0

Спасибо всем. После удаления идентификатора в качестве первичного ключа и индекса. Оператор INSERT может быть запущен. –

+0

@jarlh, если у вас есть шанс, у меня возникла проблема с запросом на вставку: http://stackoverflow.com/questions/34989107/php-binding-dynamic-number-of-variables-for-batch-insert-query – user2363025

Смежные вопросы