2011-07-22 35 views
1

我正在學習從php中將值放入我的數據庫。 這是我簡單的形式,我寫測試(其在表中)PHP/MySql - 將數據放入表

<form action="connect2db.php" method="post"> 
<table width="500" border="0"> 
    <tr> 
     <td width="200">first name:</td> 
     <td><input type="text" width="258" name="fname" id="fname"/></td> 
    </tr> 
    <tr> 
     <td width="200">last name:</td> 
     <td><input type="text" width="258" name="lname" id="lname"/></td> 
    </tr> 
    <tr> 
     <td> 
     your email address: 
     </td> 
     <td> 
     <input type="text" width="258" name="email" id="email"/> 
     </td> 
    </tr> 
    <tr> 
     <td width="200">Your message:</td> 
     <td><textarea rows="5" cols="45" name="mssg" id="mssg" ></textarea></td> 
    </tr> 
    <tr> 
     <td><input type="submit"></td> 
    </tr> 
</table> 
</form> 

一切正常,至於第1頁發送的值到第2頁,並呼應出來。但是在 的時候把它們插入到db表中。它不工作。 這是PHP代碼:

當我做了SELECT * FROM myTableNameHere,它說:「空集」,當我通過終端測試手動輸入值,我得到的值的罰款。

這裏是我的簡單的代碼:

<?php 
$connection = mysql_connect("127.0.0.1","root","passhere"); 
if(!$connection) { 
    die("database connection failed you fool!: FIX IT!" . mysql_error()); } 


$db_select = mysql_select_db("storeemail",$connection); 
if(!$db_select){ 
    die("database selection failed." . mysql_error()); } 
    else{ echo "connection made "; 
    } 

?> 

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 


<?php 
$to = '[email protected]'; 
$subject = 'test from my email php script'; 
$email = $_POST['email']; 
$name = $_POST['fname']; 
$lastname = $_POST['lname']; 
$mssg = $_POST['mssg']; 


$insertData = mysql_query("INSERT into myusers(firstname, lastname) 
VALUES ('$name', '$lastname', '$email', '$mssg');"); 


mysql_close($connection) 

?><br/> 

your first name is - <?php echo $name; ?><br/> 
your last name is - <?php echo $lastname ; ?><br/> 
your message to send is - <?php echo $mssg; ?> <br/> 

</body> 
</html> 
+2

閱讀此:http://en.wikipedia.org/wiki/SQL_injection – sje397

回答

1

爲我所看到的,你只指定2列插入(名字,姓氏)和4個值(名字,姓氏,電子郵件,味精),所以列數不​​匹配(或插入2或4個值,並相應地指定它們全部)。

插入後,發出mysql_error($連接),詳細瞭解可能與您的查詢

3
$insertData = mysql_query("INSERT into myusers(firstname, lastname) 
VALUES ('$name', '$lastname', '$email', '$mssg');"); 

上面已指定2列,並給予值四個變量

+0

謝謝!很簡單!當我做另一個功能時,我注意到了一些部分,並忘記了!謝謝 – somdow

2

myusers(firstname, lastname)被解釋爲功能。將我的用戶與pamentalhesis分開。

myusers (firstname, lastname)
自插入四個值以來,還需要指定兩個列。用查詢字符串省略後綴分號。

$insertData = mysql_query("INSERT into myusers (firstname, lastname, email, mssg) VALUES ('$name', '$lastname', '$email', '$mssg')");

您的代碼也容易受到SQL注入的影響。在mysql_real_escape_string()函數調用中放入$ _POST調用。

$email = mysql_real_escape_string($_POST['email']);
+0

我不知道這意味着什麼大聲笑。雖然我半知道sql注入。 mnd在安全性上共享任何良好的鏈接? – somdow

+0

從這裏開始:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php –

1

出現任何錯誤,這是a good article on this matter以防止進一步的類似的問題。它涵蓋了所有使用PHP的MySQL表的基本操作。首先在Google上提出這樣的問題不是很容易嗎?

+0

首先感謝您的鏈接。第二。不需要愚蠢的評論,我有3個監視器,一堆鏈接到隨機的mofis誰談論SH!T很多,但沒有解釋任何東西。網絡的力量是與同行,尤其是知情者溝通。谷歌DID不給我我正在尋找的答案,所以我來到這裏。 – somdow

+0

我發現這篇文章(這是相當不錯的,在我看來)把你的問題的標題放在谷歌搜索框中。所以我問,這樣做並不是那麼容易,而不是描述你的問題,粘貼代碼等等?只要閱讀一個簡單的教程,你就去了,問題消失了。不要侮辱你。 – Hnatt