PHP/MySQL将字符串插入数据库

PHP/MySQL将字符串插入数据库,php,mysql,database,Php,Mysql,Database,如果数据库中没有多个不同的单词,我会尝试将它们插入到数据库中。我从用户输入多个类别的文本字段中获取文本。我想用逗号分割从这个文本字段传递的文本,并将其单独插入数据库(如果它还没有在数据库中)。目前没有任何内容输入到数据库中。提前感谢您的帮助 下面是我分割文本字段数据并插入数据库的代码: $category = trim($_POST['category']); $cat2 = explode(',', $category); foreach ($cat2 as $new_interest) {

如果数据库中没有多个不同的单词,我会尝试将它们插入到数据库中。我从用户输入多个类别的文本字段中获取文本。我想用逗号分割从这个文本字段传递的文本,并将其单独插入数据库(如果它还没有在数据库中)。目前没有任何内容输入到数据库中。提前感谢您的帮助

下面是我分割文本字段数据并插入数据库的代码:

$category = trim($_POST['category']);

$cat2 = explode(',', $category);
foreach ($cat2 as $new_interest)
{
$insert_user_interests = sprintf("INSERT INTO interests IF NOT EXISTS name = '". $new_interest . "'" .
                                                 "(name) " .
                            "VALUES ('%s');",
                             mysql_real_escape_string($new_interest));
mysql_query($insert_user_interests);
}

这是您的
insert
语句:

INSERT INTO interests IF NOT EXISTS name = '". $new_interest . "'" .
                                             "(name) " .
                        "VALUES ('%s')
据我所知,这是无效的
insert
语法。(文档是。)我认为您把它与
createtable
语法混淆了。相反,请使用
忽略
和类似以下内容:

INSERT IGNORE INTO interests(name) VALUES(". $new_interest . "')" 
编辑:

好的,如果您不想插入重复项,请在
name
上创建一个唯一索引:

create index unique interests_name on interests(name);

然后,上面的查询将执行您想要的操作。

将准备好的/参数化的查询与PDO或类似的查询一起使用。否则,在某些情况下,您仍然可能容易受到注入攻击。而且,你甚至没有逃过
$new\u intererst
。你说我没有逃过
$new\u intererst
是什么意思?这不是转义吗?
mysql\u real\u escape\u string($new\u interest)
?是的,但是如果您将它连接在一起而不转义,这对您有什么好处<代码>如果不存在名称=“$new\u interest.”“我不太明白你的意思,只需使用PDO即可。试试这个。它简化了事情。这将检查名称是否已存在,如果已存在,则不会插入它?这不起作用…我是否应该搜索数据库中的值,如果结果小于1,则插入它,如果不存在,则不插入?还是有比你建议的更简单的方法?@user3272438。它怎么不起作用?如果在
名称
上有一个唯一的索引,则无法将重复的名称插入表中。我让它工作,在
插入
之前缺少
,在
值之后缺少一个
之后