2013-10-17 192 views
0

我正在向查詢傳遞一個數組。但是,我似乎無法添加每個值`。使用PHP將數據插入到MySQL數據庫

陣列林的傳球是:

Array ( 
     [name] => Name 
     [address_1] => Address 1 
     [address_2] => Address 2 
     [address_3] => Address 3 
     [address_4] => Address 4 
     [post_code] => Post COde 
     [proptype] => rent 
     [style] => house 
     [beds] => 1 
     [bathrooms] => 1 
     [garden] => 1 
     [furnished] => yes 
     [deposit] => Deposit 
     [available] => 10/18/2013 
     [description] => Description 
    ) 

下面是我的代碼:

foreach ($data as $column => $value) { 
      $columns .= ($columns == "") ? "" : ", "; 
      $columns .= $column; 
      $values .= ($values == "") ? "" : ", "; 
      $values .= $value; 
    } 

    $sql = "INSERT INTO $table ($columns) VALUES ($values)"; 

    echo "--->" . $sql; 
    exit; 

我知道我需要附上各自的價值,但我看不到,我需要這樣做。

謝謝你的時間。

+0

除非你的值都是數值,你必須用單引號括起來,這對數值也是安全的。當插入數字字段時,'1'將被轉換爲1 – Loopo

+1

!請! !使用! !PDO! http://php.net/manual/en/book.pdo.php不要問爲什麼,只是做。你可以稍後閱讀。 – nietonfir

+0

同意@nietonfir :-) – dimi

回答

0

嘗試:

foreach ($data as $column => $value) { 
    $columns .= ($columns == "") ? "" : ", "; 
    $columns .= $column; 
    $values .= ($values == "") ? "" : ", "; 
    $values .= "'" . $value . "'"; 
} 
+0

t-coder感謝您的快速回復。我設法讓你的幫助工作。 ($ data = $ column => $ value){ $ columns。= 「」:「,」; $ columns。= $ column; $ values。=($ values ==「」)? 「」:「,」; $ values。=「'」。 $值。 「'」; } $ sql =「INSERT INTO $ table($ columns)VALUES($ values)」; – WayneP

+0

@ user2701136:如果這是答案,請將其標記爲已接受。 –

0

你也可以使用一些內置的PHP函數:

// join column names with a comma 
$columns = join(array_keys($data),','); 

// pass every value through mysql-escape and join the values with quotes and commas 
$values = join(array_map("mysql_real_escape_string",array_values($data)),'","'); 

// use the produced strings; make sure you wrap the values string with double quotes 
$sql = "INSERT INTO $table ($columns) VALUES (\"$values\")"; 

參考: array_keysarray_valuesarray_mapmysql_real_escape_stringjoin

我正在使用mysql_real_escape_string出於安全原因。

+0

我認爲使用此查詢也不會添加數據...請參閱我的答案...可能是我指定的原因是發生了什麼...... –

+0

@FahimParkar我敢肯定,如果這些值與列類型匹配,那麼查詢**將**工作。關於你的答案,我並沒有完全明白TBH,但無論如何,你的建議是使用「INSERT INTO tableName VALUES $ value;」只有在數組包含** all **列的情況下才會有效。 – dimi

+0

爲什麼會插入? for循環會去插入名稱..對嗎?現在當循環試圖插入名稱,在那個時候rest字段爲空...如果OP已經設置所有字段不爲空,那麼mysql將拋出異常... **這只是我的想法。你認爲?** –

相關問題