如果value = given参数,则停止将条目添加到mysql数据库

时间:2016-03-04 20:36:37

标签: php mysql if-statement

我正在建立一个在电台上播放的最新曲目的数据库,我不希望将具有电台名称的条目添加到数据库中。

我知道我将需要使用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);
 };

2 个答案:

答案 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块中的代码执行将停止。这样,您可以根据需要添加尽可能多的验证器,而无需测试或组合条件。