如果user_id在表中是唯一的,我需要INSERT记录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>";
}
要检查唯一性,可以使用唯一键来让数据库检查唯一性:http : //dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html
或者更好,通常id是表的主键,这意味着您不必担心唯一性,主键始终是唯一的,数据库会为您检查它
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句