我正在建立一个在电台上播放的最新曲目的数据库,我不希望将具有电台名称的条目添加到数据库中。
我知道我将需要使用if else和else因为我想要做什么,因为我已经检查条目是否存在if和else所以我只是在寻找关于如何停止添加条目的一些指针广播名称位于$ trackartist字段中
我知道我需要做一些事情,如果$ trackartist = station name不做其他事情,检查条目是否存在,否则是否插入。
以下是我用来填充行的代码。
include('config.php');
$str = file_get_contents('xxxxxxxx.xxx');
$json = json_decode($str, true);
$artist = $json['now_playing']['artist'];
$track = $json['now_playing']['track'];
$cover = $json['cover'];
$check = mysqli_query($mysqli,"select * from recent where trackartist='$artist' and tracktitle='$track' and coverurl='$cover'");
$checkrows=mysqli_num_rows($check);
if($checkrows>0) {
echo "track exists";
} else {
$sql = "INSERT IGNORE INTO recent (trackartist, tracktitle, coverurl)
VALUES ('$artist', '$track', '$cover')";
$result = mysqli_query($mysqli, $sql) or die('Error querying database.');
mysqli_close($mysqli);
};
答案 0 :(得分:1)
将所有代码嵌套在if语句中:
if($artist != "Station Name"){
$check = mysqli_query($mysqli,"select * from recent where trackartist='$artist' and tracktitle='$track' and coverurl='$cover'");
$checkrows=mysqli_num_rows($check);
if($checkrows>0) {
echo "track exists";
} else {
$sql = "INSERT IGNORE INTO recent (trackartist, tracktitle, coverurl)
VALUES ('$artist', '$track', '$cover')";
$result = mysqli_query($mysqli, $sql) or die('Error querying database.');
mysqli_close($mysqli);
};
}
这将运行您的代码,只要$artist
不等于您替换"Station Name"
的任何字符串,如果它匹配,则此代码将不执行任何操作。
如果您愿意,也可以阻止多件事:
$starray = array("Station Name 1","Station Name 2","Station Name 3");
然后将if($artist != "Station Name")
更改为if(!in_array($artist,$starray))
答案 1 :(得分:0)
首先:真的,相当使用prepared statement并且不要在查询中使用变量(潜在的SQL注入)!
我认为$ statinName是你预定义的并且可以使用。
为了防止自己进入越来越复杂或嵌套的if
语句,我建议你使用异常,例如......这样:
添加新文件RecentTrackDataInvalid.php
<?php
class RecentTrackDataInvalid extends Exception {}
让你的代码做到这样:
require('RecentTrackDataInvalid.php');
include('config.php');
$str = file_get_contents('xxxxxxxx.xxx');
$json = json_decode($str, true);
$artist = $json['now_playing']['artist'];
$track = $json['now_playing']['track'];
$cover = $json['cover'];
$check = mysqli_query($mysqli,"select * from recent where trackartist='$artist' and tracktitle='$track' and coverurl='$cover'");
$checkrows=mysqli_num_rows($check);
try
{
if ($trackartist === $stationName) {
throw new RecentTrackDataInvalid("Track artis equals station name");
}
$check = mysqli_query($mysqli,"select * from recent where trackartist='$artist' and tracktitle='$track' and coverurl='$cover'");
$checkrows=mysqli_num_rows($check);
if($checkrows>0) {
throw new RecentTrackDataInvalid("track exists");
}
$sql = "INSERT IGNORE INTO recent (trackartist, tracktitle, coverurl)
VALUES ('$artist', '$track', '$cover')";
$result = mysqli_query($mysqli, $sql) or die('Error querying database.');
} catch(RecentTrackDataInvalid $e) {
echo $e->getMessage();
}
mysqli_close($mysqli);
当抛出任何异常时,try块中的代码执行将停止。这样,您可以根据需要添加尽可能多的验证器,而无需测试或组合条件。