2012-08-31 70 views
0

我正在爲Joomla 1.7開發一個簡單的留言板。Joomla JDatabase Query插入空行

如果我嘗試插入新消息JDatabase插入一個空行,我不知道爲什麼。

這裏表結構

DROP TABLE IF EXISTS `#__agb_messages`; 

    CREATE TABLE `#__agb_messages` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(50) NOT NULL, 
    `message` TEXT NOT NULL, 
    PRIMARY KEY (`id`) 
); 

這裏我使用插入新行並加載現有行的代碼

public function getMessages() { 

    $db = JFactory::getDBO(); 

    echo "<pre>"; 
    print_r(JRequest::get('post')); 
    echo "</pre>"; 

    $post = JRequest::get('post'); 

    if (
      !empty($post['name']) 
     && !empty($post['message']) 
      ) 
    { 
     $query = 'INSERT INTO #__agb_messages SET name="'.(string)$post['name'].'" AND message="'.(string)$post['message'].'"'; 
     $db->setQuery($query); 
     echo $db->getQuery(); 
     $db->query(); 
     echo $db->getErrorMsg(); 
    } 

    $query = 'SELECT * FROM #__agb_messages ORDER BY id DESC'; 
    $db->setQuery($query); 
    $messages = $db->loadObjectList(); 

    return $messages; 
} 

這就是我得到

Array 
    (
    [0] => stdClass Object 
    (
     [id] => 1 
     [name] => 0 
     [message] => 
    ) 
) 
+0

出於好奇,爲什麼Joomla 1.7? – Lodder

+0

我這樣做是爲了我的一個朋友,他必須完成他的項目網站(學校)。練習/任務/工作是爲joomla 1.7 –

+0

開發留言板。那麼,我更擅長於試驗和錯誤,看代碼和發現錯誤,所以如果你想寄給我的留言,我會嘗試找到問題,當我回家。 – Lodder

回答

1

嗨檢查inser查詢格式...

INSERT INTO table_name (column1, column2, column3,...) 
VALUES (value1, value2, value3,...) 

這是INSERT查詢的正確語法。

  • 不要更新查詢格式:)
+0

我不知道它有什麼區別,因爲它是一個有效的語法,請參閱mysql的文檔。無論如何,這沒有什麼區別。 'INSERT INTO #__agb_messages(name,message)VALUES(''。$ post ['name']。'「,''。$ post ['message']。'」)' –

+0

但您在INSERT中使用了SET詢問爲什麼我問你喜歡那樣...... – Basith

+0

而我告訴你,你應該看看那個文檔。要使用SET是可以的,它可以工作。我總是在小的INSERT Querys中使用SET。 ...對不起,這聽起來很難:P –

0

爲什麼不擴展Jtable並使用Joomla API的內置方法?