0

我正在开发一个 Joomla 模块。我正在尝试从表单中获取输入并将其插入数据库。这是我的“helper.php”代码:

<?php

/** post form to db module **/

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );



//--build the form------------>
?>
<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post">
  <p><input type="text" name="fname" id="fname" value="" /></p>
  <p><input type="text" name="lname" id="lname" value="" /></p>
  <p><input id="submit" name="submit" type="submit" value="Submit Names" /></p>
</form>
<!-- //--END BUILD THE FORM--------| -->
<?
if( (isset($_POST['lname'])) || (isset($_POST['fname'])) ) {
   //first name or last name set, continue-->
   $lname = $_POST['lname'];
   $fname = $_POST['fname'];
/*   $data =new stdClass();
   $data->id = NULL;
   $data->firstname = $fname;
   $data->lastname = $lname;*/

   $db =& JFactory::getDBO();
   $query = "INSERT INTO `#__names` (`fname`, `lname`)
      VALUES ($fname, $lname);";
   $db->setQuery( $query );
   $db->query(); 

}  else {
  echo '<h4>One Field Is Required!</h4>';
}

?>

我可以看到表单,但是当我提交数据时,它不会更新数据库表。我检查了 Apache 错误日志,但它不包含任何有关它的信息。我错过了什么?

4

3 回答 3

3

对于您的查询,它应该更像这样,您拥有它的方式在 2.5 中将不起作用。

$db = JFactory::getDbo();

$query = $db->getQuery(true)

->insert($db->quoteName('#__names'))
->columns(array($db->quoteName('fname', 'lname')))
->values($db->quote($fname),$db->quote($lname));
$db->setQuery($query);
$db->execute();
于 2013-08-29T12:23:24.747 回答
1

从查询中删除;并将引号添加到字符串$fname$lname

$query = "INSERT INTO `#__names` (`fname`, `lname`)
          VALUES ('".$fname."', '".$lname."')";

如果字段NULL为空,您可以选择插入

$lname = (trim($lname) != '') ? $lname : 'NULL';
$fname = (trim(fname) != '') ? $fname : 'NULL';
于 2013-08-29T11:48:48.060 回答
0

尝试这个:

$query = "INSERT INTO `#__names` (`fname`, `lname`)
  VALUES ('$fname', '$lname');";
于 2013-08-29T11:53:19.620 回答