2012-10-18 44 views
0

所以我一直在整天摔跤這個問題。我似乎無法發佈任何東西到我的表中,我不知道爲什麼。PHP MySQL Post表格

我已經建立了一個窗體,其中包含所有正在爲_POST傳輸的值。任何指針都會很棒。

elseif ($request == 'POST') { 

include 'header_post.php'; include 'topmain.php'; 

$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$dlnum = $_POST['dlnum']; 
$dob = $_POST['dob']; 
$address = $_POST['address']; 
$city = $_POST['city']; 
$state = $_POST['state']; 
$zip = $_POST['zip']; 
$phone = $_POST['phone']; 
$height = $_POST['height']; 
$weight = $_POST['weight']; 
$hair = $_POST['hair']; 
$eyes = $_POST['eyes']; 
$ethnicity = $_POST['ethnicity']; 
} 
$query3 = "insert into ".$db_prefix."customer_det (fname, lname, dlnum, dob, address, city, state, zip, phone, height, weight, hair, eyes, ethnicity) 
      values ('".$fname."', '".$lname."', '".$dlnum."', '".$dob."', '".$address."', '".$city."', '".$state."', 
      '".$zip."', '".$phone."', '".$height."', '".$weight."', '".$hair."', '".$eyes."', '".$ethnicity."')"; 
+0

你有沒有建立與數據庫的連接? –

+0

成爲明顯的SQL注入,你永遠不會執行任何地方的查詢。 – Matthew

+0

請讓我知道你在做什麼這個網站,所以我可以練習我的SQL注入技能。這是我在一段時間內看到的最危險的查詢。 – Ray

回答

0

你應該使用mysql_query

$query3 = mysql_query("insert.."); 

你也應該$fname = $_POST['fname'];前添加該功能防止查詢在頁面加載:

if(isset($_POST['fname'])){ 

$fname = $_POST['fname']; 
.... 
$query3 = mysql_query("insert.."); 
} 
+0

有趣。非常感謝,這非常完美。 – smada

+0

我真的很感謝它mgraph。 – smada

0

你是不是執行查詢

使用$result=mysql_query($query3);

+0

任何想法爲什麼它會在頁面加載後立即執行查詢,而不是在提交時執行查詢? – smada

+0

使用'if(isset($ _ POST ['hair'])){mysql_query($ QUERY)}' – StaticVariable

0

必須有一個查詢調用。 使用mysql_query();

如上所述,使用用戶輸入的文本存儲在數據庫中的任何變量都應包含在mysql_real_escape_string()中以防止SQL注入。

+0

正如我mysql_real_escape_string($變量)或mysql_real_escape_string($ _ POST ['價值']) – smada

+0

這兩個將工作,但由於變量已在查詢中使用,請與第一個。 – Query

2

使用MySQL連接在PHP中:

mysql_connect('DB_HOST','DB_USER','DB_PASS'); 
@mysql_select_db('DB_NAME'); 
$query='insert into ...'; 
mysql_query($query); 

,您的查詢很容易出現SQL注入,並建議您使用MySQLi擴展。

$mysql = new mysqli('DB_HOST', 'DB_USER', 'DB_PASS', 'DB_NAME'); 
    $query = 'insert into customer_det (
     fname, 
     lname, 
     dlnum, 
     ....... 
    ) values (?,?,?,....,?)'; 
    $statement = $mysql->prepare($query); 
    $statement->bind_param('sss...', //How many ever fields are there, those many sssss. For Integer use i. s is for string fields. Example ssssisssi.... 
     $fname, 
     $lname, 
     $dlnum, 
     .....); 
    $statement->execute(); 
    $statement->close(); 
    $mysql->close();