2013-07-26 72 views
0

我不知道這是可能的,但這是我想要實現的。比較mysql數組在mysql中選擇語句

我有一個簡單的PHP語句:

$ID = mysql_real_escape_string(stripslashes($_POST['ID'])); 

$sqlApp = "SELECT * from apps WHERE appID = ".$ID; 
$resultApp = mysql_query($sqlApp); 
$rowApp = mysql_fetch_array($resultApp); 

$fileName = $rowApp['fileName']; 

說我的ID號爲1和文件名是 「.mobi的。」

我想檢查我的文件名反對該查詢另一個文件名。

SELECT fileName, count(appId) as ct 
FROM `apps` 
GROUP BY filename 
HAVING ct<2 

如果我的文件名「mobi」在此查詢中找到,那麼我想回顯它沒有重複。有沒有辦法將我的php變量與查詢進行比較?如果這是不可能的,我可以嘗試解決這個問題的另一種方法是什麼?謝謝!

+0

爲什麼不'SELECT COUNT(*),其中filename = $ filename'?如果它是> 1,你有一個副本。 –

回答

0

怎麼樣這個查詢:

$query = "select * from 
(
SELECT fileName, count(appId) as ct 
FROM apps 
GROUP BY filename 
HAVING ct<2 
)cs 
where cs.fileName = 
(SELECT fileName from apps WHERE appID = ".$ID.")"; 
+0

所以如果我正確理解你的代碼,這將只打印出一個fileName,如果它沒有重複? – user2572833

+0

是的,我混合他們;只需一個查詢,您就可以完成所有工作 – Hackerman

+0

這幾乎就是我一直在尋找的東西。非常感謝! – user2572833

0

既然你知道文件名,爲什麼不只是做:從應用SELECT COUNT(*),其中filename = $文件名

如果你想確保文件名是永遠不會重複然後在創建唯一索引它。

0

與SQL堅持......

$sqlApp = "SELECT fileName, count(appId) as ct FROM `apps` WHERE fileName = '' GROUP BY filename HAVING ct<2"; 
$resultApp = mysql_query($sqlApp); 
$has_duplicates = false; 
while ($rowApp = mysql_fetch_array($resultApp)) { 
    $has_duplicates = true; 
} 

只需運行查詢然後分配「真」給一個變量如果查詢結果。

0

你可以做這樣的說法:

$id = (isset($_POST['ID']) ? intval($_POST['id']) : 0); 

$mysqli = new mysqli ('host', 'db_user', 'db_pwd', 'db_name'); 
$sql = 'SELECT fileName from apps WHERE appID = ?'; 
$fileName = ''; 
if ($statement = $mysqli->prepare($sql)) { 
    $statement->bind_param('i', $id); 
    $statement->execute(); 
    if ($result = $statement->get_result()) { 
     $row = $result->fetch_assoc(); 
     $fileName = $row['fileName']; 
     $result->free(); 
    } 
    $statement->close(); 
} 
$sql = 'SELECT COUNT(fileName) AS count 
       FROM apps 
       WHERE fileName = ?'; 
$count = 0; 
if ($statement = $mysqli->prepare($sql)) { 
    $statement->bind_param('s', $fileName); 
    $statement->execute(); 
    if ($result = $statement->get_result()) { 
     $row = $result->fetch_assoc(); 
     $count = $row['count']; 
     $result->free(); 
    } 
    $statement->close(); 
} 
$mysqli->close(); 

if ($count == 1) { 
    echo 'The file '.$fileName.' has no duplicates'; 
}