2010-05-10 40 views
0
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; 

    } 
  • 頂部的回聲適合數據庫架構的所有顯示有效的數據。
  • 沒有連接錯誤

任何想法?這個MySQL查詢有問題嗎?

在此先感謝!

這裏是echo'ed查詢

INSERT INTO設備(CAT_ID,名稱,年份,製造商,型號,價格,位置,狀態,stock_num,信息,描述,創建,修改)VALUES(1,' R」,1 'SDF', 'SDF', '2', 'd', 'd', '3', 'asdfasdfdf', 'DF','10 5月10' ,'10 5月10' )

MySQL是給:#1064 - 你在你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'condition,stock_num,information,description,created,modified'附近使用正確的語法值VALUES(1,'1''1'

id int(11)unsigned NO PRI NULL AUTO_INCREMENT 編輯刪除CAT_ID INT(11)無符號NO NULL
編輯刪除PROD_NAME VARCHAR(255)是NULL
編輯刪除prod_year VARCHAR(10)是NULL
編輯刪除製造商的varchar(255)是NULL
編輯刪除模型VARCHAR(255)是NULL
編輯刪除價格VARCHAR(10)是NULL
編輯刪除位置的varchar(255)是NULL
編輯刪除條件VARCHAR(25)是NULL
編輯刪除stock_num VARCHAR(128)是NULL
編輯刪除信息文本YES NULL
編輯刪除的描述文本是NULL
編輯刪除創建VARCHAR(20)是NULL
編輯刪除改性VARCHAR(20)是NULL

查詢:INSERT INTO設備(CAT_ID,PROD_NAME,prod_year,製造商,型號,價格,位置,狀態,stock_num,信息,描述,創建,修改d)VALUES(1, 'ASDF', '234', 'ADF', 'ASDF', '34', 'ASDF', 'ASDF', '234', 'ASDF', 'ASDF','10 5月10日」,'10 5月10' 日)

下面是從phpMyAdmin的,以防SQL出口有人想嘗試複製此問題:http://pastie.org/954206

BLEHBLEHSDFOHSE - 因此很明顯,‘條件’也是一個保留字.. 。扔了一些反引號,然後開始工作。

+0

不知道那個太..很好的捕獲。 :-) – acm 2010-05-10 19:32:16

+1

語法錯誤發生之前的方式將MySQL的觸摸數據庫,這樣他們就可以不與任何在單個查詢不存在(如列類型)有關。語法錯誤的錯誤消息是可笑的無用的(儘管引用的字符串確實從錯誤的確切位置開始);使用語法突出顯示的內容(例如MySQL查詢瀏覽器)有助於避免大量基本錯誤而不會浪費太多時間。 – Tgr 2010-05-10 19:36:01

+0

SQL/PHP混合是可怕的,您需要使用MySQL綁定語句代替。 – TravisO 2010-05-10 19:50:15

回答

1

YEAR是MySQL中的保留字。如果你打算使用它,你將需要反撥(即`year`

+0

我將年份重命名爲prod_year – ThinkingInBits 2010-05-10 19:17:27

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')"; 
+0

你會如何去引用一個返回字符串的方法? 而字符串,你的意思是文字? – ThinkingInBits 2010-05-10 18:07:52

+0

通過執行'{$ this-> equipment-> getLocation()}',如示例中所示。 – Gazler 2010-05-10 18:09:33

+0

@ThinkinBits'{$ this-> equipment-> getInformation()}'就像這樣。 – 2010-05-10 18:10:10

0

VARCHAR,則字符和文本字段需要他們周圍的報價插入。回聲SQL查詢並檢查是否發生。

0

,據我看到它在這一點上,你的問題是一年場無報價...

INSERT INTO設備(CAT_ID,名稱, 年,製造商,型號,價格, 位置,狀況,stock_num, 信息,描述,創建, 改性)VALUES(1, 'R',, 'SDF', 'SDF', '2', 'd', 'd', '3', 'asdfasdfdf', 'DF','10 5月10' ,'10 5月10' )

這裏,問題是cat_id WITH報價

查詢:INSERT INTO設備(CAT_ID, 名字,年,製造商,型號, 價格,位置,狀態,stock_num, 信息,描述,創建, 改性)VALUES('1',「ASDF 」, '234', 'ADF', 'ASDF', '34', 'ASDF', 'ASDF', '234', 'ASDF', 'ASDF','10 5月10' ,'10 五月10' )

+0

INSERT INTO設備(CAT_ID,名稱,prod_year,製造商,型號,價格,位置,狀態,stock_num,信息,描述,創建,修改)VALUES(1, 'ASDF', '234', 'ADF', 'ASDF' , '34', 'ASDF', 'ASDF', '234', 'ASDF', 'ASDF','10 5月10' ,'10 5月10' )仍然會產生一個語法錯誤 – ThinkingInBits 2010-05-10 18:56:27

+0

@ThinkingInBits:沒有prod_year在你的定義中。 – 2010-05-10 19:04:52

+0

- 你是否將年份字段更改爲prod_year?該字段仍然是varchar? --- 是拼寫正確的表名嗎? --- 您是否在命令行嘗試過該查詢? ---走出想法!:-) – acm 2010-05-10 19:05:58

0

BLEHBLEHSDFOHSE - 顯然,'條件'也是一個保留字...扔了一些反引號,然後它開始了加工。

+0

如果它正在工作,請回來並將其中一個答案標記爲「答案」,以便我們可以繼續並停止嘗試回答問題... – EAMann 2010-05-10 21:32:11

0

停止使用mysql_query()並切換到mysqli和prepared statements,那麼你不需要在你的SQL字符串中使OOP變爲鈍。它會看起來更乾淨像這樣:

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