2012-06-18 52 views
-1

以下函數用於檢查此表中是否存在此行。我知道它不是我$row還是! $row if函數沒有做任何事情。PHP mySQL 404函數

function four_zero_four($name){ 
    $four_zero_four = mysql_query("SELECT * FROM pages WHERE name = '$name'"); 

    while($row = mysql_fetch_array($four_zero_four)) { 
     echo 'no'; die(); 
    } 
}; 

$name是從該行的名稱字段和其他功能是否正常工作。

+0

那麼'$ row'包含了什麼? –

+0

您可能需要轉義該變量,考慮到您也使用舊的mysql_ *函數 – mishu

+0

,即使它不是解決方案,也可以考慮使用mysql_num_rows來測試查詢是否會獲取任何結果而不是真正獲取它們考慮到你沒有使用這些數據;一個替代方案也將運行一個計數,而不是獲取所有結果 – mishu

回答

1

另一種方式來檢查行是否存在是通過使用mysql_result功能結合COUNT功能,例如:

$query = mysql_query("SELECT COUNT(1) FROM `table` WHERE `field` = 'something'"); 
$result = mysql_result($query, 0); 

如果現在打印出$result變量,你會看到行的量實際上是由查詢返回的。這通常比使用mysql_num_rows快。

0

我不確定我是否理解邏輯,是不是打印「否」; die()何時發現一行,而不是何時發現行?無論哪種方式,我將如何檢查:

function four_zero_four($name){ 
    $four_zero_four = mysql_query("SELECT * FROM pages WHERE name = '$name'"); 

    if (mysql_num_rows($four_zero_four) == 0) { 
     // ROW DOES NOT EXIST 
    } else { 
     // ROW EXISTS 
    } 
}; 
0

您的代碼不起作用,因爲如果查詢沒有返回行,它甚至不會執行。

使用mysql_num_rows()代替:

$count = mysql_num_rows($four_zero_four); 

if($count <= 0){ 
    die("no rows in this table!"); 
} 

而且,你也許應該考慮使用mysqli的命令,而不是舊mysql_query()實施和SELECT *,因爲它們已被棄用。