我有一个小问题:)我在网上搜索但没有找到任何解决方案。
我有这样的值(从$ _GET []得到它)
tag1,tag2,tag3,tag4
我要做的就是将它插入MySql(通过PHP),如下所示:
+---------+-------------+ | id | tag | +---------+-------------+ | 33 | tag1 | | 33 | tag2 | | 33 | tag3 | | 33 | tag4 | +---------+-------------+
我在Stack Overflow上发现了很多关于此问题的文章,但这里最大的问题是我不知道每次我会得到多少值(我没有找到答案)。
我将不胜感激任何帮助。
答案 0 :(得分:3)
来自英国的问候:)
你不能只遍历查询字符串字段并一次向数据库添加一行吗?
e.g。
<?php
$id = 33;
$value_list = 'tag1,tag2,tag3,tag4';
$values = explode(',', $value_list);
foreach ($values as $value)
{
$sql = "INSERT INTO table (id, value) VALUES ($id, '$value');";
//.. execute SQL now
echo '<p>' . $sql . '</p>';
}
?>
我将其上传到http://cyba.co/test.php,以便您可以看到输出。
答案 1 :(得分:1)
您可以使用多个值执行INSERT INTO
:
INSERT INTO table (tag) VALUES ('tag1', 'tag2', 'tag3');
确保您正确地转义输入(如果用户提供)以防止SQL注入。您可以使用mysql_escape_string()
。
修改:要获取这些值,您可以执行以下操作:
$values = explode(",", $_GET['your_param']);
foreach($values as $idx => $val) {
$values[$idx] = mysql_real_escape_string(trim($val));
}
mysql_query("INSERT INTO table (tag) VALUES (".implode(",", $values).");");
答案 2 :(得分:0)
使用explode()
功能拆分字符串
$tag = "tag1, tag2, tag3";
$pieces = explode(", ", $tag);
SQL查询将是
INSERT INTO myTable VALUES ($pieces[0],$pieces[1],$pieces[2]);
祝你好运!!!
答案 3 :(得分:0)
根据您的结果
$tagData = array();
$tagList = explode(",","tag1,tag2,tag3,tag4");
foreach ($tagList as $key=>$value) {
$tagData[] = '("' . $key . '", "' . $tagList[$key] . '")';
}
$query = 'INSERT INTO tags (id,tag) VALUES' . implode(',', $tagData);
echo $query;die;
mysql_query($query);
答案 4 :(得分:0)
我会将逗号分隔的标记转换为数组,然后循环遍历数组以进行插入。
$data_array=explode(",",$tag); // converts tags to an array based on the comma
// loop through each item in the array
foreach($data_array as $one_tag){
// Get rid of the space you have in your tag string
$one_tag=trim($one_tag);
// Do whatever sanitization you need to do to your data, for example...
$one_tag=mysql_real_escape_string($one_tag);
// Insert into the database
mysql_query("INSERT INTO table SET tag='$one_tag'");
}
使用Prepared Statements可以提高效率,但是这个例子很简单。
答案 5 :(得分:0)
$id=33;
$tag=$_GET['tag'];
$tag_Split= explode(",", $tag);
$cnt=count($tag_Split);
for($i=0;$i<$cnt;$i++)
{
mysql_query("insert into tag_table(id,tag)
values ($id, $tag_Split[$i])");
}
答案 6 :(得分:-1)
尝试这个尺寸:(结合一些几乎做得对的人的想法)。
$values = array(
33=>'tag1'),
33=>'tag2'),
33=>'tag3'),
);
$sql = "INSERT INTO table (id, value) VALUES ";
$count=0;
foreach ($values as $id=> $value)
{
if ($count++ > 0)
$sql .= ',';
$sql .= "($id, '$value')";
}
$query = mysql_query($sql, $db);