2017-07-17 30 views
-1

im試圖使用方法POST(其中數據庫的名稱是「firstdb」)和名爲「TAB1」的表將值從一個頁面發送到另一個頁面。 這裏是我的代碼:使用POST方法在頁面上傳遞值HTML

第一頁命名爲「addStud.php」。代碼:

<html> 
<body> 

<form action= "addStud_D.php" method="POST"> 

<center> 
<fieldset> 
Last Name : <input type = 'text' name ='LName'> 
</br> </br> 

First Name : <input type = 'text' name = 'FName'> 
</br></br> 

Date of birth : <input type = 'text' name = 'dat'> 
</br></br> 
<input type='submit' value='OK'> 

</fieldset> 
</center> 
</form> 

</body > 
</html> 

接收命名爲「addStud_D.php」數據的第二頁。代碼是:

<html> 
<body> 

<?php 

$V1 = $_POST['LName']; 
$V2 = $_POST['FName']; 
$V3 = $_POST['dat']; 

$db=mysql_connect('127.0.0.1','root','','firstdb') 
    or die('error connecting to MySQL server.'); 

mysql_select_db('firstdb'); 
mysql_query("INSERT INTO `firstdb`.`TAB1` (`ID`, `Last_Name`, `First_Name`,`date`) 
    VALUES (NULL,'$V1','$V2', '$V3')"); 

?> 

</body> 
</html> 

仍然。這種方法是行不通的,這裏是錯誤:

Notice: Undefined index: LName in D:\Computer Scince\Web\EasyPHP-5.3.3.1\www\APP04\addStud_D.php on line 6 

Notice: Undefined index: FName in D:\Computer Scince\Web\EasyPHP-5.3.3.1\www\APP04\addStud_D.php on line 7 

Notice: Undefined index: dat in D:\Computer Scince\Web\EasyPHP-5.3.3.1\www\APP04\addStud_D.php on line 8 
+0

的第一個問題都是在同一個目錄下的文件? – Exprator

+1

更正Method的拼寫。 –

+0

並將方法更改爲html中的方法 – Exprator

回答

0

梅索德=「POST」的方法=「POST」的變化的拼寫,你的代碼的其餘部分有一些問題,以及,爲您應該閱讀有關準備聲明,這些在處理用戶輸入時是有效的。

裁判:tutorial

+0

不... !!這是不正確的。他首先與MYSQLi擴展建立連接,然後再次選擇DB,並使用MYSQL擴展執行查詢?代碼的其餘部分是如何正確的? –

+0

爲此,我向他介紹了PDO教程。 :) –

+1

這更好。但爲了將來儘量避免學校工作,它是一個擾流板。相信我我一直都在遵循這一點,現在當我必須與PHP社區相處時,我面臨着許多問題。關於標準,安全和正確的編碼方式。 –

-1

修復addStud_D.php文件

<html> 
<body> 

<?php 

$V1 = (isset($_POST['LName'])?$_POST['LName']:''; 
$V2 = (isset($_POST['FName'])?$_POST['FName']:''; 
$V3 = (isset($_POST['dat'])?$_POST['dat']:''; 

$db=mysqli_connect('127.0.0.1','root','','firstdb') 
    or die('error connecting to MySQL server.'); 

mysql_select_db('firstdb'); 
mysql_query("INSERT INTO `firstdb`.`TAB1` (`ID`, `Last_Name`, `First_Name`,`date`) 
    VALUES (NULL,'$V1','$V2', '$V3')"); 

?> 

</body> 
</html> 

,你可以驗證表單

<html> 
<body> 
<?php 
$V1 = (isset($_POST['LName'])?$_POST['LName']:''; 
$V2 = (isset($_POST['FName'])?$_POST['FName']:''; 
$V3 = (isset($_POST['dat'])?$_POST['dat']:''; 
if(!empty($V1) && !empty($V2) && !empty($V3)){ 
    $db=mysqli_connect('127.0.0.1','root','','firstdb') or die('error connecting to MySQL server.'); 
    mysqli_query("INSERT INTO `firstdb`.`TAB1` (`ID`, `Last_Name`, `First_Name`,`date`) VALUES (NULL,'$V1','$V2', '$V3')"); 
}else{ 
    echo "Error"; 
} 
?> 
</body> 
</html> 
+2

不... ...!這是不正確的。您首先使用MYSQLi擴展連接,然後再次選擇DB,然後使用MYSQL擴展執行查詢?代碼的其餘部分是如何正確的? –

+0

我刪除該行 –

+2

不過,mysql_query是錯誤的。你不能使用兩個擴展。 –

0

在第一頁,你應該改變 '梅索德' 到 '法' 。

第二頁:

<html> 
<body> 

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "firstdb"; 
$conn  = new mysqli($servername, $username, $password, $dbname); 

$V1 = isset($_POST['LName']) ? mysqli_real_escape_string($conn, $_POST['LName']) : ''; 
$V2 = isset($_POST['FName']) ? mysqli_real_escape_string($conn, $_POST['FName']) : ''; 
$V3 = isset($_POST['dat']) ? mysqli_real_escape_string($conn, $_POST['dat']) : ''; 


if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql 
    = "INSERT INTO firstdb (id, last_name, first_name, date) 
VALUES ('', '" . $V1 . "', '" . $V2 . "', '" . $V3 . "')"; 

if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
+0

比其他的更好,但是您仍然將此腳本留給[SQL注入攻擊](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 看看發生了什麼[Little Bobby Tables](http://bobby-tables.com/)即使 [如果你是逃避投入,它不安全!](http://stackoverflow.com/questions/) 5741187/sql -injection-that-around-mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

+0

更改:)謝謝。 – Kiddo

+1

對不起,但我仍然認爲我的代碼是好的現在它是如何。 – Kiddo