2010-08-16 129 views
1

我想從我的窗體捕獲數據並將其抽入數據庫,但是當我嘗試向列中輸入數據時,我只能獲取uid,而其餘列是空的。mySQL查詢創建空列

下面是一些代碼:

mysql_query("INSERT INTO personal_information (uid, name, surname, email, cell) 
VALUES ('".$uid."', '".$name."', '".$surname."', '".$email."', '".$cell."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO consumer_related_info (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO family_scenario (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO lifestyle_activities (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO occupational_information (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO sport_activities (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

mysql_query("INSERT INTO vehicle_details (uid) 
VALUES ('".$uid."')") 
or die(mysql_error()); 

什麼可能我是做錯了什麼?

+0

您使用的所有變量是否都包含值?如果在構建SQL語句之前立即回顯其內容,結果如何? INSERT語句是否產生錯誤?此外,使用[預準備語句](http://uk3.php.net/pdo.prepared-statements)會更好,可以通過[PDO](http://php.net/manual/en/book .pdo.php),或者直接使用[mysqli](http://php.net/manual/en/book.mysqli.php)。 – Mike 2010-08-16 12:26:38

+1

'register_globals'的值是什麼(請參閱php.ini或'phpinfo()') – teemitzitrone 2010-08-18 09:23:21

回答

0

用php發送數據? 然後讀取http://php.net/manual/en/security.globals.phphttp://www.php.net/manual/en/language.variables.predefined.php

編輯 在給定的信息,它更多的猜測,然後調試。但我敢打賭,register_globals是這裏的問題。

怎麼辦?簡單使用superglobals

// assumed the form method is post 
$name = mysql_real_escape_string(trim($_POST['name'])); 
// and so on 

如果這沒有幫助:使用虛擬值填寫表單,轉儲你請求的數據(和張貼在這裏)

echo '<pre>' 
    . print_r($_REQUEST, true) 
    . '</pre>'; 
exit; 
0

無關提示:請確保變量你插入使用addslashes轉義以防止大多數注入攻擊。

其實......這可能是非常相關的。引號和其他非轉義字符可能導致字符串「突破」並導致MySQL語法錯誤。

0

試試這個,看看你的變量分配有值,它是什麼

$values = array($uid, $name, $surname, $email, $cell); 
print_r($values); 

檢查輸出。

之後說。我會執行我這樣的查詢

$query = sprintf("INSERT INTO personal_information (uid,name,surname,email,cell) VALUES ('%s', '%s', '%s', '%s', '%s')", 
mysql_real_escape_string($uid), 
mysql_real_escape_string($name), 
mysql_real_escape_string($surname), 
mysql_real_escape_string($email), 
mysql_real_escape_string($cell)); 

mysql_query($query) or die (mysql_error()); 

通過轉義所有輸入,你是安全的對mysql_injections(我不知道你是否完全安全)。這個非常重要!!我不知道你對mysql注入有多熟悉,但是對於你的設置,黑客很容易查看你的整個數據庫!我相信你不希望發生這種情況:)我是對的嗎?

祝您有美好的一天!

+0

我從窗體獲取所有數據,但由於某種原因它不會進入數據庫,它只顯示空白列! – Odyss3us 2010-08-16 13:39:57

+0

你可以發佈帖子值的樣本嗎?你有沒有試圖逃避投入? – 2010-08-16 14:40:49