2012-11-09 91 views
0

我目前正在嘗試從wordpress網頁中的表單輸入數據到mysql數據庫。使用php在wordpress中輸入數據到mysql數據庫

這裏是從HTML頁面上的WordPress

<table> 
<form name="form1" method="post" action="basisForm.php"> 
<strong>Please enter your information in order to download the Macs Cabs App</strong> 
<tr><td> 
Surmane Name:</td><td><input name="sname" type="text" id="sname"></td></tr> 
<tr><td> 
First Name:</td><td><input name="fname" type="text" id="fname"></td></tr> 
<tr><td> 
Home Address:</td><td><input name="homeaddr" type="text" id="homeaddr"></td></tr> 
<tr><td> 
Most common Destination:</td><td><input name="commondest" type="text" id="commondest"></td></tr> 
<tr><td> 
Mobile Number:</td><td><input name="mobileno" type="text" id="mobileno"></td></tr> 
<tr><td> 
Home Number:</td><td><input name="homeno" type="text" id="homeno"></td></tr> 
<tr><td> 
Email Address:</td><td><input name="email" type="text" id="email"></td></tr> 
<tr><td> 
<input type="submit" name="Submit" value="Submit"></td></tr> 
</form> 
</table> 

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("macs cabs", $con); 

$sql="INSERT INTO customers (sname, fname, homeaddr, commondest, mobileno, homeno, email) 
VALUES 
    ('$_POST[sname]','$_POST[fname]','$_POST[homeaddr]','$_POST[commondest]','$_POST[mobileno]','$_POST[  homeno]','$_POST[email]')";   




if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 

mysql_close($con); 
?> 

我已經安裝了phpexec插件的代碼,這似乎是乳寧的罰款。

當我在窗體中輸入數據,我提交它不會出現在數據庫中。

我的主鍵似乎自動遞增,告訴我發生了什麼事但沒有數據出現。

在此先感謝

回答

-1

檢查與此查詢: -

"INSERT INTO customers (sname, fname, homeaddr, commondest, mobileno, homeno, email) 
VALUES 
    ('$_POST['sname']','$_POST['fname']','$_POST['homeaddr']','$_POST['commondest']','$_POST['mobileno']','$_POST['homeno']','$_POST['email']')"; 

可能有幫助... :)

+0

這似乎沒有工作 –

0

避免使用mysql_ *函數。您的插入查詢不會轉義用戶輸入。並可能導致sql注入

改爲使用PDO或mysqli。兩者都允許準備好的陳述

$_POST是一個關聯數組。所以,你會通過密鑰來獲得特定的價值。 例如,如果POST數組包含名爲「name」的鍵,那麼您可以像這樣訪問它:$_POST['name']。您可以使用單個/雙引號。

一個很好的教程學習PDO:http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html

0

試試這個:

$sql="INSERT INTO customers (sname, fname, homeaddr, commondest, mobileno, homeno, email) 
VALUES ('{$_POST['sname']}','{$_POST['fname']}','{$_POST['homeaddr']}','{$_POST['commondest']}','{$_POST['mobileno']}','{$_POST['homeno']}','{$_POST['email']}')"; 

另外,我想你理解SQL注入的風險到你的數據庫。即不應將用戶輸入的數據直接插入數據庫,您應事先進行某種清潔。

+0

我試過這jamalali,主鍵是自動遞增,但數據不會進入。感謝您對消毒過程的建議,我會一旦找出這個問題,就會執行此操作。 –

+0

好的。你是否收到任何錯誤消息?把這個關閉數據庫連接之前,看看你會得到什麼信息回: '$信息= mysql_info(); 回聲$信息;' – jamalali81

+0

我現在收到此錯誤Jamalali –

0

可能不是你要找的答案,但...

我可能會使用內置的功能,這個WordPress的。自定義帖子類型允許此功能。 (http://codex.wordpress.org/Post_Types)這裏有一篇關於它的文章:http://wpshout.com/wordpress-submit-posts-from-frontend/

這意味着你可以利用wordpress的輸入santizing並允許用戶在後端查看數據進行編輯和刪除等。

0

@ jamalali81與他的答案是在正確的軌道上,但我會刪除$ _POST變量周圍的'',所以代碼看起來像這樣:

$sql="INSERT INTO customers (sname, fname, homeaddr, commondest, mobileno, homeno, email) 
VALUES ({$_POST['sname']},{$_POST['fname']},{$_POST['homeaddr']},{$_POST['commondest']},{$_POST['mobileno']},{$_POST['homeno']},{$_POST['email']})"; 

您還應該使用PDO並清理變量以避免SQL注入。

如果上述問題無法解決您的問題,則客戶表結構也會有所幫助。

+0

這裏是我的表客戶 –

+0

custno INT(11)否PRI NULL AUTO_INCREMENT SNAME VARCHAR(15)否MUL NULL FNAME VARCHAR(15)沒有空 homeaddr VARCHAR(15)沒有空 commondest VARCHAR(50)沒有空 mobileno VARCHAR(15)沒有空 homeno VARCHAR(15)沒有空 電子郵件INT(50)沒有空 –

+0

謝謝你,但請把你的表結構在你原來的問題中的代碼格式,包括從數據庫中精確的代碼,而不是縮寫。 – thestepafter

相關問題