2013-11-15 44 views
2

好吧,首先,我是PHP和MySQL的新手,所以我很抱歉如果我要去問一些愚蠢的問題: 我想創建的頁面有4個表單和一個提交按鈕,我想將所有這些信息發送到數據庫,當我點擊提交,但我有這些錯誤:我爲測試做了一個簡單的表單(我試圖教自己一些MySQL/PHP)PHP/MySQL錯誤

Notice: Undefined index: submit in C:\XAMPP\htdocs\SQLtesting\index.php on line 37 

Notice: Undefined variable: sql in C:\XAMPP\htdocs\SQLtesting\index.php on line 45 

Warning: mysqli_query(): Empty query in C:\XAMPP\htdocs\SQLtesting\index.php on line 45 

下面是代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
    <meta name="author" content="abcde" /> 

    <title>Untitled 2</title> 
</head> 

<body> 

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="User"> 
    First Name: 
    <input type="text" name="firstName" /> <br /> 
    Last Name: 
    <input type="text" name="lastName" /> <br /> 
    E-mail: 
    <input type="text" name="email" /> <br /> 
    Phone Number: 
    <input type="text" name="phoneNumber" /> <br /> 
    <input type="submit" name="submit" /> 
</form> 
<?php 
$con=mysqli_connect("localhost","root",'',"test_1"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
if(isset($_POST['submit'])){ 
    $firstName = $_POST['firstName']; 
    $lastName = $_POST['lastName']; 
    $email = $_POST['email']; 
    $phoneNumber = $_POST['phoneNumber']; 
} 
if($_POST['submit']) 
{ 
$sql="INSERT INTO test_1_1(id,firstName, lastName, email, phoneNumber) 
VALUES 
('','$_POST[firstName]','$_POST[lastName]','$_POST[email]', '$_POST[phoneNumber]')"; 
echo "1 record added"; 
} 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 

mysqli_close($con); 
?> 
</body> 
</html> 

我也注意到,如果我寫的

$sql="INSERT INTO test_1_1(id,firstName, lastName, email, phoneNumber) 
VALUES 
('','$_POST[firstName]','$_POST[lastName]','$_POST[email]', '$_POST[phoneNumber]')"; 

根本沒有,如果有條件我不會得到

Warning: mysqli_query(): Empty query in C:\XAMPP\htdocs\SQLtesting\index.php on line 45 

錯誤,但代碼將在開始添加一個空行。

我正在使用XAMPP在本地計算機上運行此操作。

+0

不要*在你的SQL查詢中直接使用'$ _POST'。如果我決定我的名字是''); DROP TABLE test_1_1; --'?我建議你閱讀這個:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php或http://php.net/manual/en/mysqli.prepare.php –

+1

如果你只定義IF中的變量($ sql),任何使用該變量的變量都應該在IF內。僅此一項將解決第二和第三錯誤。 (並且這些是第一個要解決的問題 - 如果你現在修復第一個錯誤,它就會隱藏其他錯誤) – OGHaza

+0

非常感謝,我們將嘗試這兩個想法 – user2997092

回答

1

你必須確保在嘗試運行查詢之前設置了$ _POST ['submit']。請嘗試:

if(isset($_POST['submit'])){ 

    $firstName = $_POST['firstName']; 
    $lastName = $_POST['lastName']; 
    $email = $_POST['email']; 
    $phoneNumber = $_POST['phoneNumber']; 

    $sql = "INSERT INTO test_1_1 (id,firstName, lastName, email, phoneNumber) 
      VALUES ('','$firstName','$lastName','$email', '$phoneNumber')"; 

    if (!mysqli_query($con,$sql)){ 
     die('Error: ' . mysqli_error($con)); 
    } 

    echo "1 record added"; 
} 

順便說一句,您的代碼是開放給SQL注入的。你可以通過熟悉prepared statements來解決這個安全漏洞。

+0

嘗試了這一點,它的工作原理,非常感謝你。 – user2997092

+2

我意識到SQL注入漏洞,但首先我要學習一些關於MySQL/PHP的一般事情,並熟悉這種類型的編碼。我一直在學習大約4天,但感謝你的回答。 – user2997092

0

機會是很高的:

if($_POST['submit']) {} 

回假,你的$ SQL VAR不填充

先試權

if (!mysqli_query($con,$sql)) 
添加

var_dump($sql); 

0
  • Notice: Undefined index: submit in C:\XAMPP\htdocs\SQLtesting\index.php on line 37

這意味着$_POST['submit']不存在。你應該檢查它是否存在使用isset(...)而不是直接使用它,如果你不想得到警告。

  • Notice: Undefined variable: sql in C:\XAMPP\htdocs\SQLtesting\index.php on line 45

由於$_POST['submit']不存在,如果不執行條款,$sql未填充,錯誤的是自我解釋在這裏。

  • Warning: mysqli_query(): Empty query in C:\XAMPP\htdocs\SQLtesting\index.php on line 45

這意味着查詢字符串($sql沒有被定義,並且因此缺省爲空字符串)是空的。

0

一切都與一切有關。首先 - 使用var_dump等函數來轉儲$ _POST的內容。

我不明白爲什麼$ _ POST [「提交」]是空的,但我會增加一些價值給它:

<input type="submit" name="submit" value="Hey!" /> 

檢查條件和支架,它不合理。見Wayne Whitty的回答是正確的。

就我個人而言,我建議你使用一些PHP框架,雖然你花更多的時間。他們通常包含很多示例和文檔,他們通常旨在學習一些良好的習慣(編碼風格,...)。

+0

感謝您的回答,我將嘗試使用PHP框架 – user2997092

相關問題