2012-07-16 168 views
1

我正在将excel文件导入到我的数据库中。导入时出现错误 您的SQL语法错误;检查对应于您的MySQL服务器版本的手册,以找到在'999,,,2009-02-03,9,133,2,0,0,3,1,1,1,04/02/2009,40816.0460995,'at line 1 我为查询做了一个回声,它是正确的。但是当我尝试将其插入数据库时​​,出现此错误。这里是我的数据库结构将excel文件导入数据库时​​出错

CREATE TABLE `product` (
    `product_id` int(11) NOT NULL AUTO_INCREMENT, 
    `model` varchar(64) COLLATE utf8_bin NOT NULL, 
    `sku` varchar(64) COLLATE utf8_bin NOT NULL, 
    `upc` varchar(12) COLLATE utf8_bin NOT NULL, 
    `location` varchar(128) COLLATE utf8_bin NOT NULL, 
    `quantity` int(4) NOT NULL DEFAULT '0', 
    `stock_status_id` int(11) NOT NULL, 
    `image` varchar(255) COLLATE utf8_bin DEFAULT NULL, 
    `manufacturer_id` int(11) NOT NULL, 
    `shipping` tinyint(1) NOT NULL DEFAULT '1', 
    `price` decimal(15,4) NOT NULL DEFAULT '0.0000', 
    `points` int(8) NOT NULL DEFAULT '0', 
    `tax_class_id` int(11) NOT NULL, 
    `date_available` date NOT NULL, 
    `weight` decimal(15,8) NOT NULL DEFAULT '0.00000000', 
    `weight_class_id` int(11) NOT NULL DEFAULT '0', 
    `length` decimal(15,8) NOT NULL DEFAULT '0.00000000', 
    `width` decimal(15,8) NOT NULL DEFAULT '0.00000000', 
    `height` decimal(15,8) NOT NULL DEFAULT '0.00000000', 
    `length_class_id` int(11) NOT NULL DEFAULT '0', 
    `subtract` tinyint(1) NOT NULL DEFAULT '1', 
    `minimum` int(11) NOT NULL DEFAULT '1', 
    `sort_order` int(11) NOT NULL DEFAULT '0', 
    `status` tinyint(1) NOT NULL DEFAULT '0', 
    `date_added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `date_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `viewed` int(5) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`product_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=50 ; 

和代码导入并插入到数据库

<?php 
require_once 'reader.php'; 
$Host = "localhost"; 
$User = "user"; 
$Password = "password"; 
$DBname = "test"; 
$Link = mysql_connect ($Host, $User, $Password) or die (mysql_error()); 
mysql_select_db($DBname); 




if(isset($_POST['submit'])) 
{ 
    $filename = $_FILES['uploadedfile']['name']; 


$TARGET_PATH = "uploads/"; 


//$filename = mysql_real_escape_string($filename); 

$TARGET_PATH .= $filename; 


if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'],$TARGET_PATH)) 

chmod($TARGET_PATH, 0777); 

{ 


    $data = new Spreadsheet_Excel_Reader(); 
    $data->setOutputEncoding('CP1251'); 
    $data->read($TARGET_PATH); 

$count=0; 
    for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { 
     for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { 
      if($j==1){ 
       $product_id=$data->sheets[0]['cells'][$i][$j]; 
        } 

        if($j==2){ 
       $model=$data->sheets[0]['cells'][$i][$j]; 
        } 

      if($j==3){ 
       $sku=$data->sheets[0]['cells'][$i][$j]; 
        } 
      if($j==4){ 
       $upc=$data->sheets[0]['cells'][$i][$j]; 
        }  

      if ($j==5){ 
       $location=$data->sheets[0]['cells'][$i][$j]; 
       } 
      if ($j==6){ 
       $quantity=$data->sheets[0]['cells'][$i][$j]; 
        }  


      if ($j==7){ 
       $stock_status_id=$data->sheets[0]['cells'][$i][$j]; 
        } 
      if ($j==8){ 
       $image=$data->sheets[0]['cells'][$i][$j]; 
       }   
       if ($j==9){ 
       $manufacturer_id=$data->sheets[0]['cells'][$i][$j]; 
       } 
       if ($j==10){ 
       $shipping=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==11){ 
       $shippingamount=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==12){ 
       $price=$data->sheets[0]['cells'][$i][$j]; 
        } 
       if ($j==13){ 
       $points=$data->sheets[0]['cells'][$i][$j]; 
       }  
        if ($j==14){ 
       $tax_class_id=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==15){ 
       $date_available=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==16){ 
       $weight=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==17){ 
       $weight_class_id=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==18){ 
       $length=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==19){ 
       $width=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==20){ 
       $height=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==21){ 
       $length_class_id=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==22){ 
       $subtract=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==23){ 
       $minimum=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==24){ 
       $sort_order=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==25){ 
       $status=$data->sheets[0]['cells'][$i][$j]; 
        } 
        if ($j==26){ 
       $date_added=$data->sheets[0]['cells'][$i][$j]; 
        } 
       if ($j==27){ 
       $date_modified=$data->sheets[0]['cells'][$i][$j]; 
       } 
       if ($j==28){ 
       $viewed=$data->sheets[0]['cells'][$i][$j]; 
       }       

     } 
$count++; 

$Query72 ="insert into product (product_id,model,sku,upc,location,quantity,stock_status_id,image, manufacturer_id, shipping, shippingamount, price, points, tax_class_id, date_available, weight, weight_class_id, length, width, height, length_class_id, subtract, minimum, sort_order, status, date_added, date_modified,viewed) values('', '$model', '$sku', '$upc', '$location', $quantity, $stock_status_id, '$image', $manufacturer_id, $shipping, $shippingamount, $price, $points, $tax_class_id, $date_available, $weight, $weight_class_id, $length, $width, $height, $length_class_id, $subtract, $minimum, $sort_order, $status, $date_added, $date_modified, $viewed)"; 
echo $Query72; 
mysql_query ($Query72) or die (mysql_error()); 
if (mysql_affected_rows() >= 1) { 
    print("ROW $count - update successful!");} else {print("ROW $count - update failed!"); 
    } 



     } 
    } 
    echo "Updated Successfully"; 
} 

?> 

请帮我为什么我得到这个错误,我怎么能解决这个问题

回答

1

使用此

$Query72 ="insert into product (product_id,model,sku,upc,location,quantity,stock_status_id,image, manufacturer_id, shipping, shippingamount, price, points, tax_class_id, date_available, weight, weight_class_id, length, width, height, length_class_id, subtract, minimum, sort_order, status, date_added, date_modified,viewed) 
values('', '".$model."', '".$sku."', '".$upc."', '".$location."', '".$quantity."','".$stock_status_id."', '".$image."', '".$manufacturer_id."', '".$shipping."', '".$shippingamount."', '".$price."', '".$points."', '".$tax_class_id."', '".$date_available."', '".$weight."', '".$weight_class_id."', '".$length."', '".$width."', '".$height."','".$length_class_id."','".$subtract."','".$minimum."','".$sort_order."', '".$status."','".$date_added."','".$date_modified."','".$viewed."')"; 

愿它帮助你。

发生此错误是因为您没有正确使用引号。在您的查询日期值中必须使用单引号。

+0

是的,我试过,但把它之后,我得到错误 解析错误:语法错误,在/ home/netelmbn意外T_CONSTANT_ENCAPSED_STRING /public_html/test1/import_product.php on line 194 – 2012-07-16 06:41:55

+0

可能你错了。因为它从我的最后工作正常。 – 2012-07-16 06:52:52

+0

@ Ajay:你说得对。我错误地说了。我没有正确地检查它,我只是评论。对不起,谢谢。它为我工作! – 2012-07-16 07:44:31

0
双摇篮

使用字符串变量,然后会被罚款....