我正在使用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());
}
?>
答案 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) ";