Php 如果用户id在表中是唯一的,则插入记录;如果不是更新列,则插入记录
如果user\u id在表Php 如果用户id在表中是唯一的,则插入记录;如果不是更新列,则插入记录,php,mysql,pdo,insert,insert-update,Php,Mysql,Pdo,Insert,Insert Update,如果user\u id在表map中是唯一的,我需要插入记录,但如果不是,则用数据更新user\u id=:user\u id所在的行 我尝试的是: try { $result = $db->prepare('SELECT user_id FROM map WHERE user_id=:user_id'); $result->bindParam(':user_id', $user_id); $result->execute();
map
中是唯一的,我需要插入记录,但如果不是,则用数据更新user\u id=:user\u 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>";
}
试试看{
$result=$db->prepare('SELECT user_id FROM map WHERE user_id=:user_id');
$result->bindParam(':user\u id',$user\u id);
$result->execute();
//echo$jsonTable;
}捕获(PDO$e){
回显“错误:”。$e->getMessage();
}
试试{
如果($result==null){
$STH=$db->prepare(“插入映射(json,用户id)值(:json,:用户id)”);
$STH->bindParam(':json',$\u POST['mapData']);
$STH->bindParam(':user\u id',$user\u id);
$STH->execute();
}否则{
$STH=$db->prepare(“更新映射集json=:json其中user\u id=:user\u id”);
$STH->bindParam(':json',$\u POST['mapData']);
$STH->bindParam(':user\u id',$user\u id);
$STH->execute();
}
}捕获(PDO$e){
echo$e->getMessage();
}
echo“数据提交成功””;
}
所以这里我试着检查我需要将exist添加到表中的用户id,若并没有用户id,那个么若准备好的用户id是新的,那个么我试着插入数据,但若用户id已经将exist添加到表中,那个么更新那个条记录
但这对我不起作用,也不会给我任何错误
我要开始讲php了,很抱歉这个琐碎的问题。。。谢谢
更新:
我也尝试插入,但如果用户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>";
}
试试{
$STH=$db->prepare(“插入到映射(user\u id,json)值中(:user\u id,:json)
在重复键上更新json=values(json)”;
$STH->bindParam(':json',$\u POST['mapData']);
$STH->bindParam(':user\u id',$user\u id);
$STH->execute();
}捕获(PDO$e){
echo$e->getMessage();
}
echo“数据提交成功””;
}
要检查唯一性,您可以使用唯一键让db检查唯一性:
或者更好,通常ID是表的主键,这意味着您不需要担心唯一性,主键总是唯一的,db会为您检查它请发布表structure@johnymile不要张贴图片,写表格结构或在问题中包含图片本身(使其出现)。虽然第一个选项要好得多。我不确定
json=values(json)
是否正确,但我编写的代码就像$STH=$db->prepare(“在重复键更新json=:json时插入映射(user_id,json)值(:user_id,:json”)代码>