这个MySQL查询有问题吗?

时间:2010-05-10 18:04:44

标签: php mysql insert object

public function create() {


        echo $this->equipment->getCatId() . "<br/>";
        echo $this->equipment->getName() . "<br/>";
        echo $this->equipment->getYear() . "<br/>";
        echo $this->equipment->getManufacturer() . "<br/>";
        echo $this->equipment->getModel() . "<br/>";
        echo $this->equipment->getPrice() . "<br/>";
        echo $this->equipment->getLocation() . "<br/>";
        echo $this->equipment->getCondition() . "<br/>";
        echo $this->equipment->getStockNum() . "<br/>";
        echo $this->equipment->getInformation() . "<br/>";
        echo $this->equipment->getDescription() . "<br/><br/>";


        $db = Connect::connect();
        $current_time = date('y M d');
        $query = "INSERT INTO equipment (cat_id, name, year, manufacturer, model, price, location, condition,
                                         stock_num, information, description, created, modified)

                                         VALUES

                                        ({$this->equipment->getCatId()}, {$this->equipment->getName()}, {$this->equipment->getYear()},
                                         {$this->equipment->getManufacturer()}, {$this->equipment->getModel()}, {$this->equipment->getPrice()},
                                         {$this->equipment->getLocation()}, {$this->equipment->getCondition()}, {$this->equipment->getStockNum()},
                                         {$this->equipment->getInformation()}, {$this->equipment->getDescription()}, '$current_time', '$current_time')";

        $result = $db->query($query);

        return $db->insert_id;

    }
  • 顶部的回声都显示符合数据库架构的有效数据。
  • 没有连接错误

有什么想法吗?

提前致谢!

这是echo'ed查询

INSERT INTO设备(cat_id,名称,年份,制造商,型号,价格,位置,条件,stock_num,信息,描述,创建,修改)VALUES(1,'r',1,'sdf','sdf' ,'2','d','d','3','asdfasdfdf','df','10月10日','10月10日'')

MySQL正在提供:#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'condition,stock_num,information,description,created,modified'附近使用正确的语法VALUES(1,'r'在第1行

id int(11)unsigned NO PRI NULL auto_increment     编辑删除cat_id int(11)unsigned NO NULL
    编辑删除prod_name varchar(255)YES NULL
    编辑删除prod_year varchar(10)YES NULL
    编辑删除制造商varchar(255)YES NULL
    编辑删除模型varchar(255)YES NULL
    编辑删除价格varchar(10)YES NULL
    编辑删除位置varchar(255)YES NULL
    编辑删除条件varchar(25)YES NULL
    编辑删除stock_num varchar(128)YES NULL
    编辑删除信息文本YES NULL
    编辑删除描述文本YES NULL
    编辑删除创建的varchar(20)YES NULL
    编辑删除已修改的varchar(20)YES NULL

查询:INSERT INTO设备(cat_id,prod_name,prod_year,制造商,型号,价格,位置,条件,stock_num,信息,描述,创建,修改)VALUES(1,'asdf','234','adf' ,'asdf','34','asdf','asdf','234','asdf','asdf','10月10日','5月10日'')

以下是来自PhpMyAdmin的SQL导出,以防有人想尝试重复此问题:http://pastie.org/954206

BLEHBLEHSDFOHSE - 显然,'条件'也是一个保留的词......扔进一些反叛,然后开始工作。

6 个答案:

答案 0 :(得分:1)

YEAR是MySQL中的保留字。如果你要使用它,你将需要反击(即`year`

答案 1 :(得分:0)

假设位置,信息和描述是缺少字符串引号。

INSERT INTO equipment (cat_id, name, year, manufacturer, model, price, location, condition,
                                         stock_num, information, description, created, modified)

                                         VALUES

                                        ({$this->equipment->getCatId()}, {$this->equipment->getName()}, {$this->equipment->getYear()},
                                         '{$this->equipment->getManufacturer()}', {$this->equipment->getModel()}, {$this->equipment->getPrice()},
                                         '{$this->equipment->getLocation()}', {$this->equipment->getCondition()}, {$this->equipment->getStockNum()},
                                         '{$this->equipment->getInformation()}', '{$this->equipment->getDescription()}', '$current_time', '$current_time')";

答案 2 :(得分:0)

Varchar,char和text字段需要在它们周围插入引号。回显SQL查询并检查是否发生了这种情况。

答案 3 :(得分:0)

据我所知,你的问题是年份字段,没有引号......

  

INSERT INTO设备(cat_id,name,   年,制造商,型号,价格,   位置,条件,stock_num,   信息,描述,创建,   修改)VALUES(1,'r', 1 ,'sdf',   'sdf','2','d','d','3',   'asdfasdfdf','df','2010年5月10日','10   5月10日')

这里,问题是cat_id带引号

  

查询:INSERT INTO设备(cat_id,   名称,年份,制造商,型号,   价格,位置,条件,stock_num,   信息,描述,创建,   修改)VALUES('1','asdf','234',   'adf','asdf','34','asdf','asdf',   '234','asdf','asdf','5月10日',   '10 5月10日')

答案 4 :(得分:0)

BLEHBLEHSDFOHSE - 显然,'条件'也是一个保留的词......扔进一些反叛,然后开始工作。

答案 5 :(得分:0)

停止使用mysql_query()并切换到mysqli和prepared statements,然后在SQL字符串中不需要所有那些钝的OOP。它会看起来更干净:

$query = 'INSERT INTO table (id,name,age) VALUES (?,?,?)';