2014-02-14 60 views
0

我有一個MySQL的問題。我使用PHP和mysqli將數據寫入準備好的表中。但是,如果我提交表單,哪些值必須寫入表中,則每個值都會在表中創建新行。這裏是我的代碼:插入爲每個值創造新行

session_start(); 
$_SESSION["Field"]=array("Name1","Name2","Name3",...); 
if(!empty($_POST)){ 
foreach($_SESSION["Field"] as $Variable){ 
if(!empty($_POST[$Variable])){ 
$_SESSION[$Variable]=$_POST[$Variable]; 
}}} 
if(array_key_exists("Database",$Collection)){ 
$Database=mysqli_connect("localhost","dbadmin","password","mydatabase"); 
mysqli_query($Database,"insert into Table1 (PHPSESSID) values ('".session_id()."')"); 
foreach($_SESSION["Field"] as $Variable){ 
if(!empty($_POST[$Variable])){ 
$_SESSION[$Variable]=mysqli_real_escape_string($Database,$_SESSION[$Variable]); 
mysqli_query($Database,"insert into Table1 ($Variable) values ('{$_SESSION[$Variable]}')"); 
}} 
mysqli_close($Database); 
} 

更新:(?)我認爲,這個問題是,因爲所有的變量應該是一個mysqli的任務。但我沒有發現任何關於它的事情。我對嗎?應該是這樣的想法mysqli_query($Database,"insert into Table1 (Variable1,Variable2,Variable3) values ('Value1','Value2','Value3')");

更新2:我認爲,它也可能是由於沒有提交插入任務,但沒有必要提交它,所以我不認爲這是問題所在。但我是MySQL和SQL的初學者,所以也許我錯了。

這兩個看起來像我的問題的解決方案,但我不知道,如何使用數組中的變量在foreach循環中。誰能幫我?

回答

1

我認爲您需要了解foreachINSERT在嘗試使用它們之前要做些什麼!使用foreach循環來構建SQL查詢字符串,而不是提交到數據庫。循環完成後,您將擁有一個可執行的完整SQL查詢。

編輯:忘記強制性「在將數據插入數據庫之前,請不要忘記逃離你的價值觀!」

編輯2:這裏有一個答案。當然不是優雅,沒有測試,但可以做的工作:

session_start(); 
if(empty($_POST) || !array_key_exists("Database", $Collection)){ 
    exit; 
} 
$checklist = array("Name1", "Name2", "Name3"); 
$query = "INSERT INTO Table1 SET "; 
$db = mysqli_connect("localhost", "dbadmin", "password", "mydatabase"); 

foreach($checklist as $v){ 
    if(!empty($_POST[$v])){ 
     $_SESSION[$v] = $_POST[$v]; 
     $_POST[$v] = mysqli_real_escape_string($db, $_POST[$v]); 
     $query .= "$v='$_POST[$v]'," 
    } 
} 

$query .= "PHPSESSID='" . session_id() . "'"; 

mysqli_query($db, $query); 
mysqli_close($db); 
+0

我是初學者,我不明白你的答案的第一部分。這兩個foreach循環不能在一起,因爲它們在我的代碼中的另一個地方。在編輯中,如果你的意思是mysqli_real_escape_string,那麼你忘了寫在這裏。 – aleskva

+0

您可以添加一些小建議,問題在哪裏?或者小代碼的例子? – aleskva

+0

它似乎是可行的。我會嘗試它,我會報告結果;-) – aleskva

相關問題