2016-11-06 121 views
-2
<?php 
require 'connect.inc.php'; 

$food= $_POST['food']; 
$cost= $_POST['cost']; 

$sqlinsert = "INSERT INTO test (eat, pay) VALUES ('$food','$cost')"; 

?> 

<form method = "POST" action = "index.php"> 
    Food: <input type = "text" name = "food"> 
      <br/> 
    Cost: <input type = "text" name = "cost"> 
      <br/> 
      <input type = "submit" value = "order"> 
</form> 

爲什麼我的代碼不工作? index.php是好的,它連接好,但沒有輸出顯示在我的數據庫中時,我運行此代碼。爲什麼我的代碼不能將數據插入數據庫?

+0

你在哪裏運行查詢? – Federkun

+0

由於將查詢文本分配給變量並不意味着該查詢將被執行。 –

+0

執行mysqli_query() –

回答

2

你似乎是數據庫的新手,看到你的其他問題,這是唯一與數據庫工作有關的問題。

這行永遠不會被執行:

$sqlinsert = "INSERT INTO test (eat, pay) VALUES ('$food','$cost')"; 

我們不知道你正在使用與連接的MySQL的API;如果它是mysql_mysqli_或PDO或其他,因爲你沒有在你的問題中提及。

根據使用的API,您需要在PDO中運行mysql_query()mysqli_query()query()/execute()

請教關於如何做到這一點下面的鏈接:

檢查也使用您連接相同的API錯誤,看到你很可能在同一個文件中運行這些代碼,你需要使用條件語句aroun d你的POST數組檢查它們是否爲空,和/或在提交按鈕上使用isset()並給它一個「名稱」屬性。

即:<input type = "submit" name = "submit" value = "order">

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

否則,你站在後仰得到錯誤。

如果空參考:

注:不同的MySQL API不混雜,所以你不能用mysql_和查詢與mysqli_query()或PDO連接,記住這一點。

另一件事是確保進入數據庫的數據不包含MySQL會抱怨的字符,如撇號。

因此,您將需要轉義該數據。這是另一個原因,避免可能的SQL注入;你應該使用一個準備好的聲明。

參考文獻:


腳註:

如果您使用的是mysql_ API與連接時,該API是已棄用並已在PHP 7.0中刪除。如果是這種情況,那麼您將需要使用mysqli_或PDO API。