2011-06-24 89 views
2

我有這樣的代碼:如何檢查變量是否保存在數據庫中?

$local_id = $_GET['id']; 

$sql = dbquery("SELECT * FROM `videos` WHERE `id` = ".$local_id." LIMIT 0, 1"); 
while($row = mysql_fetch_array($sql)){ 
$video_id = $row["youtube_id"]; 
// the rest 
} 

我怎麼能檢查是否$ local_id沒有在數據庫中存在,並顯示錯誤?

回答

4

mysql_num_rows

if(mysql_num_rows($sql) == 0) { 
    //Show error 
} 
+0

+1看起來他還需要數據如果它存在,所以這是這裏最好的選擇。 @ m3tsys:可以在'while'之前放置這些行。 – kapa

0

你可以有一個$ count變量並在while循環中增加它。循環後,檢查計數,如果爲0,則回顯錯誤消息。

1

您可以使用下面的查詢:

"SELECT COUNT(*) FROM `videos` WHERE `id` = ".mysql_real_escape_string($local_id) 

這個查詢將返回一個數字:多少條記錄都符合您查詢。如果這是,您當然知道這個ID沒有記錄。

這是比其他解決方案更優化的發佈的情況下,你只是想檢查的ID的存在,並且不需要的數據(如果你使用SELECT * ...,所有數據都將被不必要地從MySQL發給你)。否則mysql_num_rows()是最好的選擇,因爲@Ryan Doherty正確發佈。


是從外部(此時GET)你把它變成一個查詢(mysql_real_escape_string()爲MySQL)來之前一定要ALWAYS逃逸數據。

如果您不這樣做,您可能是SQL Injection的受害者。

1
$sql = dbquery("select count(*) from videos where id = ".$local_id." LIMIT 0, 1"); 
$row = mysql_fetch_row($sql); 
if($row[0] == 0) 
    echo 'error'; 
+0

編輯部分是什麼? – WordsWorth

+0

你還沒有格式化你的代碼,而@Shef已經足夠爲你做好了。有足夠聲譽的用戶可以編輯問題和答案(實際上任何人都可以,但是在某些代表編輯下,必須由兩位有經驗的用戶允許)。 – kapa

+0

我很欣賞這種努力,但我很想知道我是否寫錯了。 – WordsWorth

相關問題