文章来源: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)修改数据成功