2011-10-31 19 views
1
<?php 
$inv = $_POST['inv']; 
$box = $inv; 
$date = $_POST['from']; 
$mark = $_POST['mark']; 
$type = $_POST['type']; 
$desc = $_POST['desc']; 
$machine = $_POST['machine']; 
$serial = 'x'; 
$cmode = $_POST['cmode']; 
$t1 = $_POST['t1']; 
$t2 = $_POST['t2']; 
$t3 = $_POST['t3']; 
$t4 = $_POST['t4']; 
$t5 = $_POST['t5']; 
$t6 = $_POST['t6']; 
$org = $_POST['org']; 
$plant = $_POST['plant']; 
$floor = $_POST['floor']; 
$line = $_POST['line']; 
$linex = $_POST['linex']; 
$group = $_POST['group']; 
$oper = $_POST['oper']; 
$obs = $_POST['obs']; 

echo $box.'<br/>'; 
echo $date.'<br/>'; 
echo $inv.'<br/>'; 
echo $mark.'<br/>'; 
echo $type.'<br/>'; 
echo $desc.'<br/>'; 
echo $machine.'<br/>'; 
echo $serial.'<br/>'; 
echo $cmode.'<br/>'; 
echo $t1.'<br/>'; 
echo $t2.'<br/>'; 
echo $t3.'<br/>'; 
echo $t4.'<br/>'; 
echo $t5.'<br/>'; 
echo $t6.'<br/>'; 
echo $org.'<br/>'; 
echo $plant.'<br/>'; 
echo $floor.'<br/>'; 
echo $line.'<br/>'; 
echo $linex.'<br/>'; 
echo $group.'<br/>'; 
echo $oper.'<br/>'; 
echo $obs.'<br/>'; 

$con = mysql_connect("localhost","username","mypassword"); 
if (!$con) { die('Could not connect: ' . mysql_error()); } 
mysql_select_db("brisay", $con); 
mysql_query("SET NAMES utf8"); 

$sql="INSERT INTO controller (box, date, inv, mark, type, machine, serial, cmode, t1, t2, t3, t4, t5, t6, org, plant, floor, line, linex, group, oper, obs) VALUES('$box','$date','$inv','$mark','$type','$machine','$serial','$cmode','$t1','$t2','$t3','$t4','$t5','$t6','$org','$plant','$floor','$line','$linex','$group','$oper','$obs')"; 
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } 

エラー: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group, oper, obs) VALUES ('123456','2011-10-07','123456','mark','type','4455','x' at line 1PHPのmysqlの挿入エラー

私はデバッグのためのエコーを持っている... は、私はまだエラーが生じていますし、そのために何の説明もありません。すべてが正しいです...

私はデータベースに23列あります。 すべての名前は正しいです。そして、私はまだ列 'desk'、 'oper'の挿入にエラーがあります。

これらの列構造では、 'VARCHAR(100)' 事前に

感謝しています。

+1

してくださいSQLインジェクションについて読んでみてください。 '$ obs'が' foo 'に等しい場合) <私は悪い> - –

答えて

0

`のようなmysqlの 使用中のreserved wordの一つである:

INSERT INTO controller 
(box, `date`, inv, mark, `type`, machine, serial, cmode, 
t1, t2, t3, t4, t5, t6, org, plant, `floor`, line, linex, 
`group`, oper, obs) 
VALUES 
('$box','$date','$inv','$mark','$type','$machine','$serial','$cmode', 
'$t1','$t2','$t3','$t4','$t5','$t6','$org','$plant','$floor','$line', 
'$linex','$group','$oper','$obs') 
+0

私はすべての言葉をエスケープし、それは魅力のように動作します、ありがとう。 – user1021482

2

グループはSQLの予約語です。 (GROUP BY)。あなたは `` -quotesを使ってそれを引用する必要があります。

linex, `group`, oper 
0

グループは、彼らがリザーバーワードしている場合は、フィールド名を脱出しようとshoul group`

INSERT INTO controller (....,`group`, ........