MySQL数据库的默认字段值

时间:2011-08-29 15:05:58

标签: php mysql forms

我正在使用HTML表单来捕获多个字段的用户输入,其中一些字段可以由用户留空,一个特定字段称为“pasref”。我希望能够做到的,如果可能的话,用户是否将此字段留空,以使默认值成为“未分配”文本并将其保存为记录的一部分一个mySQL数据库。

我只是承认我对这种类型的编程很新,我不确定这是否可以在mySQL数据库中完成,或者它是否需要作为保存每条记录的php脚本的一部分来完成。我只是想知道是否有人可以告诉我我需要做什么?

如果有帮助的话,我已将我的PHP脚本包括在内。

<?php
require("phpfile.php");
// Gets data from URL parameters
$userid = $_GET['userid'];
$locationid = $_GET['locationid'];
$pasref = $_GET['pasref'];
$additionalcomments = $_GET['additionalcomments'];

// Opens a connection to a MySQL server
$connection = mysql_connect ("hostname", $username, $password);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

// Insert new row with user data
$query = sprintf("INSERT INTO finds " .
         " (userid, locationid, pasref, additionalcomments ) " .
         " VALUES ('%s', '%s', '%s', '%s');",
         mysql_real_escape_string($userid),
         mysql_real_escape_string($locationid),
         mysql_real_escape_string($pasref),
         mysql_real_escape_string($additionalcomments));

$result = mysql_query($query);

if (!$result) {
  die('Invalid query: ' . mysql_error());
}

?>

5 个答案:

答案 0 :(得分:3)

您可以在mysql列上设置默认值。您需要执行以下查询:

ALTER TABLE finds MODIFY pasref varchar(100) default 'Not Allocated';

varchar(100)更改为您所在字段的长度。

或者你可以在php中设置它:

if( empty($_GET['pasref']) ) {
    $pasref = 'Not Allocated';
}
else {
    $pasref = $_GET['pasref'];
}

或者最后你可以把它作为表单中的默认值。虽然用户需要清除它,如果他们想要别的东西:

<input type="text" name="pasref" value="Not Allocated" />

最后只需在PHP中注意,您需要使用mysql_real_escape_string转义对数据库的输入,或者将PDO与占位符一起使用。就像你有一个SQL注入漏洞一样。

使用POST也更好。将表单方法更改为HTML中的POST并引用$_POST而不是$_GET

答案 1 :(得分:1)

这可以通过更改mysql数据库中的列属性并将pasref列设置为not null并设置默认值来解决。

如果您可以使用phpmyadmin

访问数据库,则轻松完成

答案 2 :(得分:1)

ALTER TABLE finds ALTER pasref SET DEFAULT = 'Not Allocated'

因此,如果插入的新行没有column_name的值,则使用Not Allocated。如果您可以访问这些工具,也可以使用phpMyAdmin或MySQL Workbench等界面轻松完成。

现在你要做的就是检查PHP代码中pasref是否为空,并确保在这种情况下不插入任何内容(空字符串“”)。

答案 3 :(得分:1)

你可以改变一行

$pasref = $_GET['pasref'];

$pasref = $_GET['pasref'] == '' ? 'Not Allocated' : $_GET['pasref'];

答案 4 :(得分:-1)

使用这个:

$query = " UPDATE $tabla SET fecha_ultimo_cambio=DEFAULT WHERE id in ($id) ";