2012-06-13 45 views
-1

Website.(PHP)插入的數據顯示爲「陣」

這感覺就像一個共同的問題,但它是一個很難谷歌!

正如代碼註釋中所述,插入值以前不是問題,但在我在其下面添加其他INSERT查詢時停止工作。

$user = $_POST['name']; 
$night = $_POST['club']; 
$query = mysql_query("SELECT day FROM nights WHERE name = '$night'"); 
$email = $_POST['email']; 

while ($row = mysql_fetch_assoc($query)) { 

    $date = getFullDateString($row['day']); 
    $date2 = getDateString($row['day']); 

} 

// this one previously worked but now enters into the database with $user as "Array" 
mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$user', '$night', '$date') ") or die(mysql_error()); 

$guest1 = $_POST['name1']; 
$guest2 = $_POST['name2']; 

// these were added later and work fine but seem to have had an effect on the query above 
mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$guest1', '$night', '$date') ") or die(mysql_error()); 
mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$guest2', '$night', '$date') ") or die(mysql_error()); 

foreach ($_POST as $key){ 
    if (is_array($key)){ 
     foreach ($key as $key2 => $value){ 
      mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$value', '$night', '$date') ") or die(mysql_error()); 

     } 
    } 
} 
+1

我很困惑,這4個插入中的哪一個正在做什麼? – 2012-06-13 09:56:17

+0

$ value比數組可用is_array檢查。而你的代碼要求所有的mysql注入。 –

+1

哦,不,SQL注入!你的代碼很容易受到攻擊。請使用'mysql_real_escape_string'或更好的PDO。 – kapa

回答

1

您應該將來賓HTML輸入重命名爲guests[],而不是再次使用name。你有一個命名衝突。

你需要在你的JavaScript代碼來解決這個問題:

var name = $("<p><input class='input' type='text' name='guests[]' value='' /></p>"); 

而在你的HTML代碼:

<input class="input" type="text" name="guests[]" /> 

之後,您的PHP代碼應該處理客人變量作爲數組:

$guests = $_POST['guests']; 

foreach ($guests as $guest) 
{ 
    mysql_query("INSERT INTO guestlists (guest, night, date) VALUES('$guest', '$night', '$date') ") 
    or die(mysql_error()); 
} 

請注意,您不需要去guests[1],guests[2]guests[3]

+0

這是最整潔的解決方案。 – matchdav

1
在您的網站

您有:

<input class='input' type='text' name='name["+currentArrayNum+"]' value='' /> 

生成表單。 name[...]參數最終在PHP中作爲$_POST['name']這將是一個數組。如果你強制這是一個字符串,字符串將是Array。因此,請帶上您的$user並使用foreach對其進行迭代,以處理每個名稱。

另外,請閱讀SQL注入!

0

你有你的頁面被插入看起來像這樣的表單字段上的一些JavaScript:

<input class="input" type="text" name="name[5]" value=""> 

name="name[5]"的部分是什麼導致在這裏你的問題 - 它在一個數組提交時變成$_POST['name']。您需要重構該代碼。