php中ifelse同时执行,PHP - if和else语句都在执行

我有一个音乐数据库,我试图检查用户是否输入了重复的专辑。当专辑标题和艺术家名称都相同时,它会给出错误并且不会按预期插入数据。它也适用于当它是不同的艺术家,但相同的专辑名称。但是当它是数据库中已有艺术家的新专辑时,PHP将执行if和else块。

function getDB(){

try{

$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', '', '');

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

return $db;

}catch(Exception $e){

echo $e->getMessage();

}

}

function duplicateAlbum(){

$db = getDB();

$stmt = $db->prepare("select * from artist join album on artist.id = album.artist_id where name = ? and title = ?");

$stmt->execute(array($_POST['artist'],$_POST['title']));

echo $stmt->rowCount() != 0;

return $stmt->rowCount() != 0;

}

function echoResults(){

$db = getDB();

$albums = $db->prepare("select * from album where title = ?");

$albums->execute(array($_POST['title']));

$artists = $db->prepare("select * from artist where name = ?");

$artists->execute(array($_POST['artist']));

$results = array("albums" => $albums->fetchAll(PDO::FETCH_ASSOC), "artists" => $artists->fetchAll(PDO::FETCH_ASSOC));

echo json_encode($results);

}

function addAlbum($artist, $title, $genre, $released){

$db = getDB();

$stmt = $db->prepare("select id from artist where name = ?");

$stmt->execute(array($artist));

$artistresult = $stmt->fetchAll(PDO::FETCH_ASSOC)[0]['id'];

$stmt = $db->prepare("insert into album values (?,?,?,?)");

$stmt->execute(array($title, $genre, $released,$artistresult));

}

if(!duplicateAlbum()){

addAlbum($_POST['artist'],$_POST['title'],$_POST['genre'],$_POST['released']);

echoResults();

}

else echo "Duplicate album";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值