mysqli_query返回false,因为值包含空格字符

时间:2015-11-22 21:33:56

标签: php mysql

我正在从Excel工作表中插入数据,但是我收到错误,看起来它正在破坏,因为值中包含空格字符。据我记得VARCHAR(200)

中允许的空格字符

这是我正在使用的代码

//CREATE SQL QUERY FOR INSERTING DATA IN DATABASE
    $sql = "INSERT INTO ".$month."_".$year."(";
    foreach($sheetData[1] as $columnName){
        $sql .= preg_replace('#[ ]#', '_',$columnName). ",";
    }
    $sql = rtrim($sql, ',');//REMOVES COMMA FROM END OF THE STRING
    $sql .= ")";
    //
    $sql .= " VALUES((";
    for($i=2;$i < count($sheetData);$i++){
        foreach($sheetData[$i] as $columnName){
            $sql .= $columnName.",";
        }
        $sql = rtrim($sql,',');//
        $sql .= "),";
    }
    $sql = rtrim($sql,',');//
    $sql .= ")";
    echo $sql;
    $query = mysqli_query($conn,$sql) or die(mysqli_error($conn));

循环之后,这就是SQL QUERY看起来

的方式
INSERT INTO December_2015(S_No,Zone,State,City2,VM_Town,Distibutor_Code,Distributor_Name,Dealer_Code,Dealer_Name,Category,Address,Location,Contact,Mobile_No,Visit_1,Visit_2,Visit_3,Visit_4,Visit_5,Visit_6) VALUES( (1,South,Telanagana,Hyderabad,Y,1006704,Sai Santhoshi Enterprises,TG000999,Sree Laxmi Mobiles,A,F4,anthem Arcade,gujarathi Galli,koti ,Koti,Rajesh,8790575680,7-Nov,18-Nov,28-Nov))
  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在Santhoshi Enterprises,TG000999,Sree Laxmi Mobiles,A,F4,anthem Arcade,gujarathi G&#39;附近使用正确的语法。在第1行

它之前说'Santhoshi Enterprises ... '附近有空格字符

2 个答案:

答案 0 :(得分:0)

你有两个&#34;(&#34;而不是一个&#34; VALUES&#34;

答案 1 :(得分:0)

Akash
你之前没有问过一个问题同一个/类似的代码,但是你得到了一个不同的错误:How to loop inside a variable?!

从一般情况来看,你会编写凌乱的代码,而你却无法阅读/理解错误信息。所以我猜你是新手。

以下是一些很好的读物:

说完所有内容后,您的代码将分解为更易读的部分:

Clients

最后你最终会得到这样的结果:

InspectionFrequencies

其他说明和提示:

  • 考虑到您说您正在从Excel工作表中读取数据...如果没有某些测试/检查/验证,请不要信任输入数据。不仅仅是因为安全而是稳定性,而且一般来说,你不想让事情破裂。 那些excel表可以手动制作,这自动意味着它容易出现人为错误,因此你无法100%确定你会得到什么。

  • 考虑使用PDO和预备语句(安全原因,但也是良好做法)