PHP:Mysql判断KEY是否存在 如果存在走修改 如果不存在走添加

文章来源:http://www.cnblogs.com/hello-tl/p/7738113.html

0、PHP代码

<?php

/**
 * POST 传参
 *
 * 例子 添加修改 使用同一个地址 一条 sql 解决
 *
 * 做统计使用这个例子也是很可可以的
 */

# PDO 链接数据库
$dsn = 'mysql:host=192.168.1.101;port=3306;dbname=test';
$PDO_test = new PDO($dsn, 'root', 'root', array(PDO::ATTR_PERSISTENT => false));
# 字符集
$PDO_test->query('set names utf8;');

# ON DUPLICATE KEY 判断 KEY 是否存在如果存在就修改 如果不存在就添加
$tmp = $PDO_test->prepare("
    insert into test
    (id,fieldOne,fieldTwo,fieldThree)values(:id,:fieldOne,:fieldTwo,:fieldThree)
    ON DUPLICATE KEY UPDATE fieldOne = :fieldOne,fieldTwo = :fieldTwo,fieldThree = :fieldThree
");

# 执行
$ret = $tmp->execute(array(
    # 如果传入 ID 已存在就修改数据  ?  传入的 ID 不存在或者没传入 ID 他都是添加
    ':id' => !empty($_POST['id']) && isset($_POST['id']) ? $_POST['id'] : NULL,
    # 一下都是做判空处理
    ':fieldOne' => !empty($_POST['fieldOne']) && isset($_POST['fieldOne']) ? $_POST['fieldOne'] : NULL,
    ':fieldTwo' => !empty($_POST['fieldTwo']) && isset($_POST['fieldTwo']) ? $_POST['fieldTwo'] : NULL,
    ':fieldThree' => !empty($_POST['fieldThree']) && isset($_POST['fieldThree']) ? $_POST['fieldThree'] : NULL
));

if($ret){
    echo json_encode(array('massage'=>'操作成功','code'=>'200'));
}else{
    echo json_encode(array('massage'=>'操作失败','code'=>'400'));
}

1、Mysql语句

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `test`
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `fieldOne` varchar(255) DEFAULT NULL,
  `fieldTwo` varchar(255) DEFAULT NULL,
  `fieldThree` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;

SET FOREIGN_KEY_CHECKS = 1;

2、测试添加数据

  (1)使用 postMan 添加

     

  (2) 添加成功

      

3、测试修改数据

  (1)修改时添加上ID

    

   (2)修改数据成功

    

 

文章来源:http://www.cnblogs.com/hello-tl/p/7738113.html

posted @ 2017-10-26 17:47  小田吃饺子  阅读(1321)  评论(0编辑  收藏  举报