0

Joomla1.7用の簡単なゲストブックを開発しています。

新しいメッセージを挿入しようとすると、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] => 
    )
  )
4

3 に答える 3

1

こんにちは、挿入クエリ形式を確認してください...

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

INSERTこれはクエリの正しい構文です。

  • 更新クエリ形式と混同しないでください:)
于 2012-08-31T13:56:48.353 に答える
0

JDatabaseJoomlaのクラスを使用して挿入を行うことも検討してください;)

public function insertObject (
        $table
        &$object
        $keyName=NULL
)

http://docs.joomla.org/JDatabase::insertObject/1.6

Joomla1.7でも利用できると思います

于 2012-08-31T16:15:04.970 に答える
0

Jtable を拡張し、Joomla API の組み込みメソッドを使用します。

于 2012-09-01T01:55:23.180 に答える