【发布时间】:2015-04-09 10:02:33
【问题描述】:
如果 user_id 在表 map 中是唯一的,我需要插入记录,但如果不是,则使用数据更新 user_id=:user_id 的那一行...
我的尝试:
try {
$result = $db->prepare('SELECT user_id FROM map WHERE user_id=:user_id');
$result->bindParam(':user_id', $user_id);
$result->execute();
//echo $jsonTable;
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
try {
if ($result==null) {
$STH = $db->prepare("INSERT INTO map (json, user_id) VALUES (:json, :user_id)");
$STH->bindParam(':json', $_POST['mapData']);
$STH->bindParam(':user_id', $user_id);
$STH->execute();
} else {
$STH = $db->prepare("UPDATE map SET json = :json WHERE user_id= :user_id");
$STH->bindParam(':json', $_POST['mapData']);
$STH->bindParam(':user_id', $user_id);
$STH->execute();
}
} catch (PDOException $e) {
echo $e->getMessage();
}
echo "<p>Data submitted successfully</p>";
}
所以在这里我尝试检查是否 user_id 我需要将存在添加到表中,如果没有 user_id,那么如果准备好的 user_id 是新的,那么我尝试插入数据,但是如果 user_id 已经存在到表中然后更新记录...
但这对我不起作用,也不会给我任何错误吗?
我是 php 的初学者,对于琐碎的问题非常抱歉...谢谢!
更新: 我也尝试插入,但如果 user_id 重复则更新:
try {
$STH = $db->prepare("INSERT INTO map (user_id, json) VALUES (:user_id,:json)
on duplicate key update json=values(json)");
$STH->bindParam(':json', $_POST['mapData']);
$STH->bindParam(':user_id', $user_id);
$STH->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
echo "<p>Data submitted successfully</p>";
}
【问题讨论】:
-
不确定
json=values(json)是否正确,我会写成$STH = $db->prepare("INSERT INTO map (user_id, json) VALUES (:user_id,:json) on duplicate key update json=:json");
标签: php mysql pdo insert insert-update