MySql语法错误 - 列具有名称的数字

时间:2013-09-05 10:10:48

标签: php mysql sql

我有以下mysql语句:

INSERT INTO rates_try (`Weight`, `length`, `height`, `Min`, `100`, `200`, `300`) VALUES (1000,0.1,2.3,1,2,3,4);

出现错误:

  

没有创建行。检查SQL语法中有错误;检查   手册,对应右边的MySQL服务器版本   在第1INSERT INTO rates_try行的'insertquery'附近使用的语法   (WeightlengthheightMin100200300)价值观   (1500,2.31,3.5,1,0,0,0);

表结构是:

rates_try ( `Weight` int(11), 
            `length` double, 
            `height` double, 
            `Min` double, 
            `100` double, 
            `200` double, 
            `300` double )

我不确定语法有什么问题,我知道它很可能与数字列有关,如果这是导致它的问题我将不得不在名称中添加一些东西,所以它们不仅仅是数字,但我想先检查一下情况并非如此。

创建语句的php代码

$insertquery = "INSERT INTO rates_{$tablename} (`Weight`, `length`, `height`, `Min`";
                foreach ($titles as $title){
                    if (empty($title) ){

                    }else{
                        $insertquery .= ", `" . $title . "`";
                        $counter++;
                    }
                }
                $insertquery .=  ") VALUES (".$row['weight'].",".$row['cbm_min'].",".$row['cbm_max'].",".$value;
                $a = 0;
                while ($a < $counter){
                    $newvalue = $array[$a][$i];
                    if (empty($newvalue)){
                        $newvalue = 0;
                    }
                    $insertquery .= ",". $newvalue;
                    $a++;
                }
                $insertquery .= ");";

                echo $insertquery. "<br/>";
                $queryResult = mysqli_query($con, insertquery);

2 个答案:

答案 0 :(得分:5)

$queryResult = mysqli_query($con, insertquery);

你现在能看到吗?

$)前面缺少insertquery

答案 1 :(得分:0)

这是一个有趣的,因为您实际上遵循了使用反引号来围绕列名称的规则 - 并且根据document I just checked,您的列名确实有效:

标识符可以以数字开头,但除非引用可能不仅仅由数字组成。

在这方面,虽然Windows上的MySQL标识符不具有区分性,但您会发现在Linux上,它们是。你确定你在某个地方没有错过大写或小写吗?您的第一列使用大写字母开始,但其他列都没有。

但是我会说使用必须反向标记的列名通常是一个不好的想法。使用不需要特别小心的东西。