2011-08-29 140 views
3

我正在使用一個HTML表單捕獲用戶輸入的幾個字段,其中一些可以留空,用戶,一個特定的字段被稱爲'pasref'。如果可能的話,我希望能夠做到的是,如果該字段被用戶留空,則默認值變爲文本「未分配」,並且將其作爲記錄的一部分保存到一個mySQL數據庫。默認字段值到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

+1正確轉義的php代碼。 – Johan

回答

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。將表單方法更改爲POST在您的HTML和參考$_POST而不是$_GET

+0

所有,非常感謝您花時間回覆我的帖子,非常感謝。我選擇了'Cfreak'的建議,並且它很有用。問候。克里斯 – IRHM

1

這可以通過更改mysql數據庫中的列屬性並將pasref列設置爲非空並設置默認值來解決。

很容易做到,如果你可以使用phpMyAdmin

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

因此,當一個新的行插入,沒有價值column_name,與使用Not Allocated訪問數據庫。如果您有權訪問這些工具,那麼使用phpMyAdmin或MySQL Workbench等界面也可以輕鬆完成。

現在,您只需檢查您的PHP代碼中是否爲空,並確保您沒有插入任何內容(空字符串「」是事)。

1

你可以改變行

$pasref = $_GET['pasref']; 

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