2013-01-18 83 views
0

我试图插入特定标记的串入一个MySQL表,但它不太工作了。PHP变量数组到MySQL

$tags = array explode (", ", $_POST["tags"]); 
    $tag_array = implode(", ", $tags); 

我的表有列TAG_ID(自动递增)和TAG_NAME(其中阵列的每个项目需要进入)

我如何循环通过我的数组,使MySQL插入一个空白值到TAG_ID (因为它是自动递增的),并且我的每个数组值都存储在tag_name列中?

+3

一旦破灭,你没有一个数组了。你有一个STRING。我希望你正在使用正确的[sql注入攻击](http://bobby-tables.com)防御机制,而不仅仅是试图将该字符串直接填入你的DB ... –

+0

1.我假设MySQL正在使用tag_id作为主键,所以不要插入空值2。'$ mysqli-> prepare(“INSERT INTO tags VALUES(?)”)'combined with [foreach](http://php.net/manual/en /control-structures.foreach.php) – Amelia

+0

我还建议你编程一些逻辑来解释用户输入的数据如:苹果,橙子,香蕉,[三个空格]番茄,[6个空格]等。你可以通过'trim($ tags)'和/或用逗号(没有空格)来简单地做到这一点,就像'explode(',',$ _POST ['tags']);''。 – user1477388

回答

0

你别提有多你在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(); 
+0

我只是使用的mysql_query中任一而PHP或的foreach –

+1

@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

+0

完美。我会考虑继续使用PDO。我好几年没有使用PHP/MySQL,所以我对新的开发非常不熟悉。你的代码工作正常(: –

0

你为什么不只是做一个foreach循环,并插入标签?

foreach($tags as $tag_name) 
{ 
    mysql_query("INSERT INTO tags (tag_name) VALUES ($tag_name)"); 
} 

请注意,您应该真正使用PDO,因为mysql_query已过时。这只是一个例子,您应该在插入数据之前对如何清理数据做一点研究。一个简单的谷歌搜索将让你去。

+0

谢谢,我目前正在研究PDO,我已经知道如何清理数据,但还没有为此编写代码,因为我想测试基本功能。 –