2012-07-11 507 views
0

我正在做一個PHP/mySQL程序,我第一次可能需要一些建議。讀取和寫入到mysql

我想要創建的程序的工作方式如下...如果出現錯誤,它將會發送給服務器。你希望能夠自己填寫表格。這個問題會顯示在另一個計算機上。

我想我需要寫入一個mySQL數據庫,然後在將它們連接到我的數據庫之後從下一個computor讀取它。但我如何以最好的方式做到這一點?

我已經成功下載XAMPP並在mySQL中創建表。此外,我把信息和提交按鈕的字段。

我在得到錯誤:

$operationstep = $_POST['Operation step']; 
$problem_detail = $_POST['Problem detail']; 

Notice: Undefined index: Operation step in E:\xampp\htdocs\avvikelse.php on line 21

Notice: Undefined index: Problem detail in E:\xampp\htdocs\avvikelse.php on line 22

Notice: Undefined variable: operation_step in E:\xampp\htdocs\avvikelse.php on line 25 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'step, Problem detail) VALUES ('', '',' at line 1

// blabla, connetcting... 

$operationstep = $_POST['Operation step']; 
$problem_detail = $_POST['Problem detail']; 

$sql = "INSERT INTO avvikelsekort (Operation step, Problem detail) VALUES 
('$operation_step', '$problem_detail')"; 

if (!mysql_query($sql)) { 
     die('Error: ' .mysql_error()); 
} 

mysql_close(); 
?> 

我現在如你所說的馬可和我得到陣列(0){}我的形式看起來像這樣

<form action="avvikelse.php" method="POST" /> 
    <p>Operation step: <input type="text" name"Operation step" /></p> 
    <p>Problem detail: <input type="text" name"Problem detail" /></p>  
    <input type="submit" value="Submit" /> 
    </form> 
+2

在'$ operationstep = $ _POST ['Operation step'];'之前加'var_dump($ _ POST);'檢查您傳入的'POST'數據。 – 2012-07-11 07:28:29

+0

在我做了你告訴我的事情之後,我更新了我的問題。爲什麼我的POST是空的? – user1516844 2012-07-11 10:01:33

+0

看看我編輯的答案 – Marco 2012-07-11 14:34:16

回答

2

做如果在字段名稱中使用空格,則必須使用反引號。
更多,如果你調用變量

$operationstep = $_POST['Operation step']; 
$problem_detail = $_POST['Problem detail']; 

您的查詢應該是

$sql = "INSERT INTO avvikelsekort (`Operation step`, `Problem detail`) VALUES 
    ('$operationstep', '$problem_detail')"; 

而且,最後但並非最不重要的,記得你必須始終過濾用戶輸入避免SQL注入!

編輯
你的表格是錯誤的。試試這個:

<form action="avvikelse.php" method="POST" /> 
    <p>Operation step: <input type="text" name="Operation step" /></p> 
    <p>Problem detail: <input type="text" name="Problem detail" /></p>  
    <input type="submit" value="Submit" /> 
</form> 
+0

+1,但不僅如此 - 所有讀取POST參數,空格都轉換爲%20 – alfasin 2012-07-11 07:26:52

1

不能有空格在Post /獲取名稱:

$operationstep = $_POST['Operation step']; 
$problem_detail = $_POST['Problem detail']; 

嘗試

$operationstep = $_POST['Operation_step']; 
$problem_detail = $_POST['Problem_detail']; 

或形式對其進行重命名。

另外:

$operationstep = $_POST['Operation step']; 
$problem_detail = $_POST['Problem detail']; 

不匹配,你在做刀片 - 注意,您在插入使用,變量名如何用空格列名應被稱爲:

$sql = "INSERT INTO avvikelsekort (`Operation step`, `Problem detail`) VALUES 
('$operation_step', '$problem_detail')"; 
0

您會收到通知未定義索引,因爲該索引不存在於$_POST變量中。不要在索引中使用空格。編輯您的表單並在輸入字段的名稱屬性中使用下劃線,並在查詢中使用$operation_step,同時在分配時使用$operationstep。並在查詢中使用反引號查詢表名。

0

由於其他人已經回答,您會收到未定義的索引消息,因爲該值不存在於$_POST陣列中。

我建議您在將$_POST數據放入變量之前清理數據,因爲任何發佈數據可能包含某些可能導致SQL注入攻擊的惡意數據。您可以在以下網址查看其他安全開發實踐:https://www.owasp.org/index.php/OWASP_Guide_Project