2016-08-16 88 views
0

我正在爲員工創建一個數據庫,並且我正在對它應用crud操作 代碼的問題是我無法從字段中將數據插入到數據庫中,我也收到此錯誤: 不直接訪問超全局$ _post數組。Crud插入方法

<?php 

    session_start(); 
    include("configa.php"); 


if ($_SERVER["REQUEST_METHOD"] == "POST") { 
$FirstName = filter_input(INPUT_POST, $_POST["FirstName"]); 
    $LastName = filter_input(INPUT_POST, $_POST["LastName"]); 

// attempt insert query execution 

$sql = "INSERT INTO employeeinfo (FirstName, LastName) VALUES ('$FirstName', '$LastName')"; 

if(mysqli_query($mysqli, $sql)){ 

echo "Records added successfully.";} 

else{ 

    echo "ERROR: Could not able to execute $sql. " . mysqli_error($mysqli); 

    } 

// close connection 




$sql = 'INSERT INTO `employeeinfo`(`FirstName`, `LastName`) '; 
    $sql = $sql . "VALUES (\"$FirstName\", \"$LastName\") "; 









if ($mysqli->query($sql) === TRUE) { 
    echo "New record created successfully"; 

    $_SESSION['completed'] = "YES"; 
} else { 
    echo "Error: " . $sql . "<br>" . $mysqli->error; 
    } 



header('Location: Employee.php'); 
}else 
     { 
    echo 'BYE BYE !!!'; 
     } 

    mysqli_close($mysqli); 
?> 
+0

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param' ](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢。 **不要**使用手動轉義和字符串插值或串聯來實現此目的,因爲如果您忘記正確地轉義某些內容,您將創建嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman

+0

這是在一個框架內產生有關使用'$ _POST'的警告嗎?如果是這樣,你應該按照推薦的方法訪問參數。 – tadman

+0

此外,'$ mysqli-> query($ sql)=== TRUE'被過度殺掉。這裏'if($ mysqli-> query($ sql))'是綽綽有餘的。 – tadman

回答

0

所以在PHP filter_input()方法接受第三個參數,指定它應該做的過濾功能。根據您的情況判斷,您可以使用過濾器FILTER_SANITIZE_STRING

參考PHP手冊中的filter_array方法:http://php.net/manual/en/function.filter-input.php

參考什麼過濾器在PHP可用:http://php.net/manual/en/filter.filters.php我使用這個演示什麼過濾

http://php.net/manual/en/filter.filters.sanitize.php

所以你的輸入賦值給變量將如下所示,

$FirstName = filter_input(INPUT_POST, $_POST["FirstName"], FILTER_SANITIZE_STRING); 
    $LastName = filter_input(INPUT_POST, $_POST["LastName"], FILTER_SANITIZE_STRING); 

我收集你可能會使用NetBeans進行PHP開發(https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new)。這與您提到的警告相同。但我不確定你會看到其他IDE的警告。