mysql使用NOT EXISTS查询不存在,才插入数据,当为空时怎么处理。

abc_2004 2011-08-02 03:47:23
insert into product_species(type_id,type_name)SELECT $typeid,$typename FROM product_species where NOT EXISTS(SELECT * FROM product_species where product_species.type_id=$typeid LIMIT 1)

现在问题是,当我product_species表中没有数据时,不能插入数据。当我有数据时就能正常插入。
呵呵...我刚学PHP,我以前玩开VB,sql,ASP,access 请那位大侠帮帮我,谢谢!
...全文
1468 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 abc_2004 的回复:]
insert into product_species(type_id,type_name)SELECT $typeid,$typename FROM product_species where NOT EXISTS(SELECT * FROM product_species where product_species.type_id=$typeid LIMIT 1)

现在问题是,当我pro……
[/Quote]

嘿嘿,为空的时候不行,只要把空表变成不空就行了 :)

改了一下,用的我的表名/字段,你自己改回去即可
insert into k(title,weizhi)
SELECT 'eee','222'
FROM ( select title,weizhi from k union select '---','000' ) x
where NOT EXISTS( SELECT * FROM k where title='eee' )
limit 1
;
我把limit放在了外面,因为放在里面会重复插入,应该不是你需要的,
这里的 '---','000' 只要和你要插入的'eee','222'不同即可


abc_2004 2011-08-03
  • 打赏
  • 举报
回复
ok谢谢大侠!
xuzuning 2011-08-03
  • 打赏
  • 举报
回复
$rs = mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!");
abc_2004 2011-08-03
  • 打赏
  • 举报
回复
$rs = if(mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!");
我刚调试,这句有问题。请大侠再帮改改....
xuzuning 2011-08-03
  • 打赏
  • 举报
回复
mysql 的 insert 指令没有 where 子句,所以你的写法不可能成功

你 #5 的代码应写作
if ($_POST['action']=="add") {
$typeid=$_POST['typeid'];
$typename=$_POST['typename'];

$rs = mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!");
if( mysql_num_rows($rs) > 0) {
echo"<script>alert('您添加的标识或类别名已经存在,请换一个再试试!');history.go(-1)</script>";
}else {
mysql_query("insert into product_species(type_id,type_name)values('$typeid','$typename')");
if(mysql_affected_rows()) {
echo "<script>alert('类别添加成功!');window.location='admin_product_species.php'</script>";
}else {
echo "<script>alert('类别添加失败!');history.go(-1)</script>" ;
}
}
}
abc_2004 2011-08-03
  • 打赏
  • 举报
回复
字段 类型 整理 属性 Null 默认 额外 操作
---------------------------------------------------------
puid int(6) 否 auto_increment
type_id int(6) 是 NULL
type_name varchar(50) gbk_chinese_ci 是 NULL
---------------------------------------------------------
以上是我product_species表的结构。
我试了以下语句也不行。
if ($_POST['action']=="add")
{
$typeid=$_POST['typeid'];
$typename=$_POST['typename'];

/*if(mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!"))
{
echo"<script>alert('您添加的标识或类别名已经存在,请换一个再试试!');history.go(-1)</script>";
}
else
{*/
if(mysql_query("insert into product_species(type_id,type_name)values('$typeid','$typename')"))
{
echo "<script>alert('类别添加成功!');window.location='admin_product_species.php'</script>";
}
else
{
echo "<script>alert('类别添加失败!');history.go(-1)</script>" ;
}
// }
}
foolbirdflyfirst 2011-08-02
  • 打赏
  • 举报
回复
这么说type_id只是个计数字段,而非primary key?
这个表有主键或者type_id是unique索引才能用on duplicate key
abc_2004 2011-08-02
  • 打赏
  • 举报
回复
INSERT INTO product_species(type_id,type_name)
VALUES (101,102) ON DUPLICATE KEY UPDATE type_id=type_id+1;
UPDATE product_species SET type_id=type_id+1 WHERE type_id=101
我试了还是不行。能插入数据,但不会判断TYPE_id或TYPE_NAME是否已存在

我想插入数据时选判断TYPE_id或TYPE_NAME是否已存在。
foolbirdflyfirst 2011-08-02
  • 打赏
  • 举报
回复
不如用insert into .... on duplicate key ...
heyli 2011-08-02
  • 打赏
  • 举报
回复

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧