php - 如果值匹配则更新行,否则插入新行

标签 php mysql

我正在创建一个表格,供学生插入入学考试,其中包含以下值(id(主键)、名称、符号、地址) 然后他们会打印准考证。

如果他们双重输入其值,并且如果已经存在具有相同符号值的行,我想将名称和地址更新为新值(如果存在)而不是插入新值。

我怎样才能做到这一点..?

我的Mysql数据库是

$name = $_POST['name'];
$symbol = $_POST['symbol'];
$address = $_POST['address'];



$sql = "
IF NOT EXISTS (SELECT * FROM entrance WHERE symbol = :symbol)
INSERT INTO entrance(
name,
symbol,
address) VALUES(:name,:symbol,:address)
ELSE
 UPDATE entrance SET name = :name, address = :address WHERE symbol = 
:symbol
";
$q = $db->prepare($sql);
$q->execute(array(':name'=>$a,':symbol'=>$symbol,':address'=>$address,))

最佳答案

您可以在 SQL 中使用 IF NOT EXISTS。

IF NOT EXISTS (SELECT * FROM entrance WHERE symbol = :symbol)
  INSERT INTO entrance(
    name,
    symbol,
    address) VALUES(:name,:symbol,:address)
ELSE
  UPDATE entrance SET name = :name, address = :address WHERE symbol = :symbol

关于php - 如果值匹配则更新行,否则插入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519237/

相关文章:

mysql - 按主题查询唯一的最新帖子

php - 尝试修改 codeigniter 应用程序数据库表中的字段,但知道如何识别该表

php - 在 PHP 类中建立变量作用域?

php - 代码点火器购物车类,不会在 session 中保存购物车元素

php - 由于底部导航,Codeception 验收测试失败

mysql - 如何在断网环境下完成分布式数据库复制?

php - 检查答案并从数据库验证它在 PHP 中是否正确

php - 合并和 str_replace

php - 快速将 simpleXMLObject 转换为 STDClass?

mysql - 级联不工作