2011-09-02 113 views
0

我正在使用PHP和MysqlPHP空白值插入數據庫

這裏我使用了簡單的表單插入名稱,電子郵件,電話號碼。

我已經驗證了所有數據的:(PHP代碼後提交...)

$error = array(); 

if(isset($_POST['Name']) && $_POST['Name']=='') { 
    $error[] = "Please enter the Name"; 
} 

if(isset($_POST['Email']) && $_POST['Email']=='') { 
    $error[] = "Please enter the Email"; 
} 

if(isset($_POST['Phone']) && $_POST['Phone']=='') { 
    $error[] = "Please enter the Phone"; 
} 

最後使用下面的查詢插入數據..

if(count($error)==0) { 
    $error= ""; 
    And the query is 
    insert into mytab ('Name','Email','Phone') Values (mysql_escape_string($_POST['Name']),mysql_escape_string($_POST['Email']),mysql_escape_string($_POST['Phone'])); 
    redircet to success.. 
} 

它工作正常,但有些一次我歌廳插入$錯誤日誌就像下面..

錯誤日誌:

Time File name:myfile.php Insert $error: insert into mytab ('Name','Email','Phone') Values('','','');#~# 

日誌我是用我的數據庫包裝類(使用mysql_ $錯誤())

+0

那麼,你是否在插入之前檢查'$ error'? –

+0

你能在第一段代碼中修復所有錯印(我希望它們是錯印)嗎?因爲看起來你添加一個錯誤,如果'$ _POST ['Name']'不是空的... – a1ex07

+0

是從你的原始代碼複製粘貼?因爲在你的驗證中你只檢查'$ _POST ['Name']!='''是否適用於所有的字段 - 無論如何這都沒有多大意義(應該是==)。 – Quasdunk

回答

0

寫在理想情況下,你應該從抽象的代碼的其餘部分數據庫的訪問。你的問題可能與mysql_escape_string()函數有關。你應該在sql查詢之前進行驗證,檢查該值是否有效,然後將該值傳遞給要執行的查詢。另外,如果問題不一致,您可以進行壓力測試並記錄所有您嘗試插入的值以及所有返回消息,以查看導致錯誤的是哪種值。

0

在您的這部分代碼

if(isset($_POST['Email']) && $_POST['Name'') { 
    $error[] = "Please enter the Name"; 
} 

if(isset($_POST['Phone']) && $_POST['Name'') { 
    $error[] = "Please enter the Name"; 
} 

有沉重的語法錯誤。也許只有在這裏。 此外,所有的條件正在評估,在第二條語句約

我建議這個驗證way.-

if (isset($_POST['Email']) && strlen($_POST['Email'])) 
    ... 
0

您的驗證應該像

if(!isset($_POST['Name']) || $_POST['Name'] =='') 
$error[] = "Please enter the Name"; 
}