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

时间:2019-02-04 15:21:41

标签: 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,))

2 个答案:

答案 0 :(得分:1)

您可以在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

答案 1 :(得分:0)

首先通过使用select查询检查数据是否在数据库中

$select = "SELECT * FROM entrance WHERE symbol='$symbol'";

如果选择查询返回行> 0,则运行更新查询,否则插入查询