php代码写入phpmyadmin


php code writing to phpmyadmin

我有一些php代码,这些代码将我的数据库(phpmyadmin)写入一个名为b83hi_out_of_office的表中。我正在从html表单中输入自定义消息和用户名。

数据确实写入了表,但它也添加了额外的空白行。

有人知道为什么会这样吗?我该怎么解决?

<form method="post" action="">
<p>Out of Office Message</p>
<p><input type="radio" name="RadioGroup" value="off" id="RadioGroup_0" checked="checked"> OFF<br>
<input type="radio" name="RadioGroup" value="on" id="RadioGroup_1"> ON
</p>

<p><label>Custom Out of Office Message</label>
<input type="text" name="custommessage" size="30" maxlength="25"/></p>
<p><input type="submit" name="submit" value="Submit" /></p>
</form>

<?php
$message = $_POST[custommessage];
//get user info
$user = JFactory::getUser();

// Get a db connection.
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

// Insert columns.
$columns = array('username', 'message');

// Insert values.
$values = array($db->quote($user->username), $db->quote($message));

// Prepare the insert query.
$query
  ->insert($db->quoteName('b83hi_out_of_office'))
  ->columns($db->quoteName($columns))
  ->values(implode(',', $values));

// Set the query using our newly populated query object and execute it.
$db->setQuery($query);
$db->execute();
?>

我的猜测是,每次加载表单时,脚本都在运行(因此,在加载表单时插入一个空行,然后在提交表单时插入正确的行)。

最简单的方法是检查是否设置了$_POST值。

示例:

<?php
if(isset($_POST['submit'])) {
    $message = $_POST[custommessage];
    //get user info
    $user = JFactory::getUser();        

    // Get a db connection.
    $db = JFactory::getDbo();

    // Create a new query object.
    $query = $db->getQuery(true);

    // Insert columns.
    $columns = array('username', 'message');

    // Insert values.
    $values = array($db->quote($user->username), $db->quote($message));

    // Prepare the insert query.
    $query
      ->insert($db->quoteName('b83hi_out_of_office'))
      ->columns($db->quoteName($columns))
      ->values(implode(',', $values));

    // Set the query using our newly populated query object and execute it.
    $db->setQuery($query);
    $db->execute();
}
?>

根据该更改,除非表单已发送,否则不会插入任何数据。一个更好的选择是将php脚本作为一个单独的文件,并使表单的action=""指向该文件。