PHP不会在数据库中插入

时间:2013-08-29 11:47:48

标签: php mysql database joomla module

我正在研究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错误日志,但它不包含任何有关它的信息。我错过了什么?

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

从查询中移除;并在字符串$fname$lname

中添加引号
$query = "INSERT INTO `#__names` (`fname`, `lname`)
          VALUES ('".$fname."', '".$lname."')";

OPTIONALLY 如果字段为空,则需要插入NULL,如

$lname = (trim($lname) != '') ? $lname : 'NULL';
$fname = (trim(fname) != '') ? $fname : 'NULL';

答案 2 :(得分:0)

试试这个:

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