我試圖插入特定標記的串入一個MySQL表,但它不太工作了。PHP變量數組到MySQL
$tags = array explode (", ", $_POST["tags"]);
$tag_array = implode(", ", $tags);
我的表有列TAG_ID(自動遞增)和TAG_NAME(其中陣列的每個項目需要進入)
我如何循環通過我的數組,使MySQL插入一個空白值到TAG_ID (因爲它是自動遞增的),並且我的每個數組值都存儲在tag_name列中?
我試圖插入特定標記的串入一個MySQL表,但它不太工作了。PHP變量數組到MySQL
$tags = array explode (", ", $_POST["tags"]);
$tag_array = implode(", ", $tags);
我的表有列TAG_ID(自動遞增)和TAG_NAME(其中陣列的每個項目需要進入)
我如何循環通過我的數組,使MySQL插入一個空白值到TAG_ID (因爲它是自動遞增的),並且我的每個數組值都存儲在tag_name列中?
你別提有多你在PHP MySQL的訪問,但使用PDO,你可以做這樣的事情:
$dbh = new PDO("mysql:dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
$insert = $dbh->prepare('INSERT INTO my_table (tag_name) VALUES (:tag)');
$insert->bindParam(':tag', $tag, PDO::PARAM_STR);
foreach ($tags as $tag) $insert->execute();
我只是使用的mysql_query中任一而PHP或的foreach –
@RudyvanSloten:['的mysql_query()'](http://php.net/manual/en/function.mysql-query.php)(與沿古代'mysql' PHP擴展的其餘部分)從PHP 5.5.0開始已被棄用,並且將來會被刪除。相反,[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO_MySQL](http://php.net/manual/en/ref.pdo-mysql.php)應該使用擴展名。另請參見[MySQL:選擇API](http://php.net/manual/en/mysqlinfo.api.choosing.php)指南和[相關FAQ](http://php.net/manual/en/faq .databases.php#faq.databases.mysql.deprecated)以獲取更多信息。 – eggyal
完美。我會考慮繼續使用PDO。我好幾年沒有使用PHP/MySQL,所以我對新的開發非常不熟悉。你的代碼工作正常(: –
你爲什麼不只是做一個foreach循環,並插入標籤?
foreach($tags as $tag_name)
{
mysql_query("INSERT INTO tags (tag_name) VALUES ($tag_name)");
}
請注意,您應該真正使用PDO,因爲mysql_query已過時。這只是一個例子,您應該在插入數據之前對如何清理數據做一點研究。一個簡單的谷歌搜索將讓你去。
謝謝,我目前正在研究PDO,我已經知道如何清理數據,但還沒有爲此編寫代碼,因爲我想測試基本功能。 –
一旦破滅,你沒有一個數組了。你有一個STRING。我希望你正在使用正確的[sql注入攻擊](http://bobby-tables.com)防禦機制,而不僅僅是試圖將該字符串直接填入你的DB ... –
1.我假設MySQL正在使用tag_id作爲主鍵,所以不要插入空值2。'$ mysqli-> prepare(「INSERT INTO tags VALUES(?)」)'combined with [foreach](http://php.net/manual/en /control-structures.foreach.php) – Amelia
我還建議你編程一些邏輯來解釋用戶輸入的數據如:蘋果,橙子,香蕉,[三個空格]番茄,[6個空格]等。你可以通過'trim($ tags)'和/或用逗號(沒有空格)來簡單地做到這一點,就像'explode(',',$ _POST ['tags']);''。 – user1477388