我已经尝试过对此question进行一些回答,但似乎无法解决我的特定问题。
我想插入数据,但前提是flight_number
不存在。我该怎么办?
$sql = mysqli_query($con,
"INSERT INTO space (`flight_number`, `mission_name`, `core_serial`, `payload_id`)
VALUES ('".$flight_number."', '".$mission_name."', '".$core_serial."', '".$payload_id."')"
);
答案 0 :(得分:1)
Rob因为您说flight_number是唯一的,所以可以使用INSERT IGNORE
<?php
$sql = "INSERT IGNORE INTO space (`flight_number`, `mission_name`, `core_serial`, `payload_id`) VALUES (?,?,?,?)";
$stmt = $con->prepare($sql);
$stmt->bind_param('isss',$flight_number,$mission_name,$core_serial,$payload_id);
if($stmt->execute()){
echo 'data inserted';
// INSERT YOUR DATA
}else{
echo $con->error;
}
?>
或者您可以从数据库中选择与所提供的航班号相等的任何行,然后如果没有得到结果,则将其插入。
$sql = "SELECT mission_name WHERE flight_number = ? ";
$stmt = $con->prepare($sql);
$stmt->bind_param('i',$flight_number);
if(mysqli_num_rows($stmt) === 0){
// INSERT YOUR DATA
}
答案 1 :(得分:-1)
唯一的航班号索引可以解决问题。
CREATE UNIQUE INDEX flight_number_index
ON space (flight_number);
如果要用新行替换现有行,请使用以下命令:
$sql = mysqli_query($con,
"REPLACE INTO space (`flight_number`, `mission_name`, `core_serial`, `payload_id`)
VALUES ('".$flight_number."', '".$mission_name."', '".$core_serial."', '".$payload_id."')"
);
请注意,我只是复制了您的代码,然后将INSERT更改为REPLACE以使其易于理解。请请不要在生产中使用此代码,因为它易于注入。
如果您不想替换现有行,请运行插入并检查错误。如果存在与索引相关的错误,则该行已经存在。
免责声明:我没有测试过任何此代码,因此可能会有错别字。