Как я могу объединить данные из формы и из трех таблиц mysql, чтобы вставить данные в другую таблицу с php? - PullRequest
0 голосов
/ 07 октября 2011
sql="INSERT INTO maticna
   (formCompany,formPlace,formDate,formPerson,formCollect
   ,formOffer,formDescribe,formBarkod,formSubject,formWorking
   ,formStatus,formRevision) 
SELECT 
  company.formCompany, company.formPlace
  , $formDate AS formDate
  , $formPerson AS formPerson
  , $formCollect AS formCollect
  , $formOffer AS formOffer
  , $formDescribe AS formDescribe
  , $formBarkod AS formBarkod
  , inv.formSubject, work.rnNo
  , $formStatus AS formStatus
  , $formRevision AS formRevision)"
 ."FROM company, inv, work 
 WHERE inv.formBarkod='$formBarkod'";

Что-то не работает с этим кодом? Может ли кто-нибудь помочь с этим кодом или каким-то другим способом?

Ответы [ 2 ]

2 голосов
/ 07 октября 2011
$formDate = mysql_real_escape_string($formdate);
$formPerson = mysql_real_escape_string($formPerson);
....
//For each and every $var you inject in the SQL statement.

$sql="INSERT INTO maticna
   (formCompany,formPlace,formDate,formPerson,formCollect
   ,formOffer,formDescribe,formBarkod,formSubject,formWorking
   ,formStatus,formRevision) 
SELECT 
  c.formCompany, c.formPlace
  , '$formDate' AS formDate
  , '$formPerson' AS formPerson
  , '$formCollect' AS formCollect
  , '$formOffer' AS formOffer
  , '$formDescribe' AS formDescribe
  , '$formBarkod' AS formBarkod
  , i.formSubject, w.rnNo
  , '$formStatus' AS formStatus
  , '$formRevision' AS formRevision
FROM company c
INNER JOIN work w ON (w.id = i.work_id)
INNER JOIN inv i ON (i.company_id = c.id)
WHERE i.formBarkod= '$formBarkod' ";

Ошибки, которые вы делаете
1. Не используйте неявный синтаксис соединения, это приводит к перекрестным соединениям; вместо этого всегда используйте явный синтаксис соединения.
2. У вас не было никаких критериев присоединения.
3. Все $ vars нужно всегда экранировать.
4. Все $ vars, будь они числа или нет, должны быть указаны в SQL-выражении.
5. Незначительная синтаксическая ошибка в операторе вставки.

0 голосов
/ 07 октября 2011

Разве вы не должны вставить VALUES перед выбором?

INSERT INTO maticna (...) VALUES (SELECT ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...