我有下表:
正如您所看到的,index_lang是一个限制情侣nid /语言的唯一键。
现在,如果我将nid和语言的值插入这样的内容:
如果有一对nid / language对的行已经插入到该表中,我怎么能检查PHP,因为我似乎无法检索index_lang键的值。我假设这个index_lang键会自动获取插入的2列的值,因此根据上表,第1行唯一键的值将为:'1chinese'
编辑:我正在使用drupal API在此表中插入数据,现在插入数据的PHP代码如下所示:
foreach ( $user_lang as $k=>$v ){
$lang_query = db_insert('my_table')
->fields(array(
'nid' => $og_group->etid,
'language' => $v))
->execute();
}
$ user_lang是一组语言。
第二次修改:
我想要一个IGNORE声明来插入我的数据以避免重复并忽略错误,尽管没有使用Drupal DB API这样的事情,如果我对如何做没有任何想法...
答案 0 :(得分:1)
首先想到SQL。您需要此查询
SELECT COUNT(*) FROM table_name WHERE nid=1 AND language='Chinese'
通过这种方式,您可以轻松获取PHP - 其查询将取决于您使用的是mysql
还是mysqli
答案 1 :(得分:1)
索引与列不同。它被mysql用于内部使用,您无法将其作为列读取。
但是上面应该阻止你插入双重条目。只需通过尝试添加nid = 1和language =“Chinese”的行来检查它。您应该收到一条错误消息(唯一密钥违规。)
从php你可以尝试插入行。如果您只是不需要插入,可以使用错误消息向用户显示内容。
如果您希望更新当前值,可以在sql中使用ON DUPLICATE KEY UPDATE。
最后你当然可以先做一个select ... from languages where nid=1 and language="Chinese"
,然后决定你想用它做什么。
答案 2 :(得分:0)
您无法检索index_lang
索引的值。
SELECT 1 FROM mytable WHERE nid=1 AND language='Chinese'