2016-03-04 70 views
0

我建立最新的軌道數據庫的電臺播放的,我不想被添加到數據庫中的站名稱條目。停止條目被添加到MySQL數據庫,如果值=給定參數

我知道我需要使用if else,否則如果因爲我想做的事情,我已經檢查if和else是否存在,所以我只是在尋找一些關於如何停止添加條目的指針如果電臺名稱在$ trackartist場

我知道我需要做的沿,如果$ trackartist =站名別的什麼也不做檢查,如果做插入其他存在進入線的東西。

這是我用來填充行的代碼。

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

除非我不理解你想要什麼,你基本上回答了自己的問題:如果'(!$藝術家=「站名」){/ *做的東西* /}' – WheatBeak

+0

所以基本上如果($藝術家= 「Station Name」){} else($ checkrows> 0){ echo「track exists」;} else if? – TheWebMann

+0

編輯:不大,看回答 – WheatBeak

回答

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); 
    }; 

} 

這隻要運行你的代碼替換任何字符串"Station Name"如果它不符合這個代碼將作爲$artist不等於沒做什麼。

您也可以阻止多的事情,如果你想這樣的:

$starray = array("Station Name 1","Station Name 2","Station Name 3");

然後更改if($artist != "Station Name")if(!in_array($artist,$starray))

+0

'='的意思是「不等於」,所以一切,但電臺名稱將運行在代碼中的if語句 – WheatBeak

+0

那究竟需要的是什麼感謝你很慈祥的迅速答覆和解釋非常感謝我知道我是沿着正確的路線,但這爲我節省了很多頭痛:) – TheWebMann

0

第一:說真的,relly使用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塊將停止時,任何異常將是拋出。這樣,您可以根據需要添加儘可能多的驗證器,而無需測試或組合條件。

相關問題