2013-12-23 169 views
2

我想從一個HTML表單數據添加到數據庫中,這裏是我的代碼數據未插入到數據庫

<html><?php 

$var1=$_POST[tag]; 
$var2=$_POST[name]; 
$var3=$_POST[surname]; 

echo $var1; 
echo $var2; 
echo $var3; 

$dbhandle=mysql_connect('localhost','root','mysql') 
or die ("Unable to connect to database"); 
mysql_select_db("arduino"); 

mysql_query("INSERT INTO door('Tag','Name','Surname') VALUES('$var1','$var2','$var3')"); 
?> 
</html> 

然而,沒有任何數據進入數據庫,我已經把echo語句從而表明從表單數據被接收,這一切工作正常,但是當我打開分貝,

SELECT * FROM門

返回空集。

回答

4

您對您的column名引號,所以刪除這些

//Tag,Name,Surname 

mysql_query("INSERT INTO door(Tag,Name,Surname) VALUES('$var1','$var2','$var3')"); 

          ---^----^---^------^--- 

注:您的代碼是容易受到SQL注入,也mysql_() API現在已不爲> PHP 5.5.0,可以考慮使用改爲mysqli_()PDO

閱讀php.net

enter image description here


大紅色的框,您應該總是使用錯誤報告在這種情況下,如果你不打算使用不同的API,比使用echo mysql_error($connection);這會給你一個用戶友好的錯誤信息。

+0

謝謝你,這是我遇到問題的地方 – sosytee

+0

@sosytee歡迎:) –

2

在你的查詢中刪除單引號從列名'

mysql_query("INSERT INTO door(Tag,Name,Surname) VALUES('$var1','$var2','$var3')"); 

如果你的目的是爲了躲避列名的時候,MySQL的轉義字符是反勾「`」。而且只有在列名或表名是reserved words之一時才需要。

0

首先,我不會建議你使用mysql,但PDO或MySQLi。而且你的代碼總是容易受到類似sql注入攻擊的攻擊,你的db很容易被黑客入侵。與PDO準備語句,你可以使用這個像

$pdoCon = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'abc'); 
$stmt = $pdoCon->prepare("INSERT INTO door(Tag,Name,Surname) VALUES(?,?,?)"); 
$stmt->bindParam(1, $var1, PDO::PARAM_INT); 
$stmt->bindParam(2, $var2, PDO::PARAM_STR, 20); 
$stmt->bindParam(3, $var3, PDO::PARAM_STR, 20); 
$stmt->execute(); 

這是總的安全和更好的使用和打賭它會像魅力,沒有SQL注入攻擊或任何其他。欲瞭解更多信息,請通過http://www.php.net/pdo.prepared-statements