2012-06-29 260 views
0

我有一個PHP代碼,它將運行Select查詢以檢查是否存在特定的personName。如果存在,我們應該返回一個JSON,如果不存在,我們應該發送一個JSON響應,說明相同。如果mySQL查詢返回true,則返回JSON字符串

我的代碼到目前爲止;

$rst= mysql_query("select* from Person 
where personname='Labby'"); 


while($r= mysql_fetch_array($rst)){ 

// Now what ?? 
} 

//如何知道$rst= mysql_query("select* from Person where personname='Labby'");返回true或false?並根據這些創建一個JSON響應。我怎樣才能做到這一點 ?

+0

'mysql_query'返回結果資源ID不是布爾值。這也沒有意義,如果它存在,我們應該返回一個JSON,如果不存在,我們應該發送一個JSON響應,說明相同。'所以你需要用'JSON'和'JSON response'來確切地定義你的意思。 – Blaster

+2

不要使用'mysql_'函數。他們已被棄用(http://www.php.net/manual/en/function.mysql-query.php)。使用'PDO'或'mysqli_'。 –

+0

@ JonathanM,'mysql_'函數不是**棄用**! *棄用*和*不鼓勵*之間有很大差異。 –

回答

1

或者切換查詢使用COUNT(*)並檢索該值,或使用mysql_num_rows()(或mysqli或PDO等效項)。

+0

你的意思是像$ rst.mysql_num_rows(); ?你能告訴我一個示例代碼 – Illep

+0

...在頁面上有很多鏈接到的例子。 –

1

對於SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回resultset的語句,mysql_query()在成功時返回一個資源,或者在錯誤時返回FALSE。

http://php.net/manual/en/function.mysql-query.php

// Perform Query 
$result = mysql_query($query); 

// Check result 
// This shows the actual query sent to MySQL, and the error. Useful for debugging. 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 

// Use result 
// Attempting to print $result won't allow access to information in the resource 
// One of the mysql result functions must be used 
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc. 
while ($row = mysql_fetch_assoc($result)) { 
    echo $row['firstname']; 
    echo $row['lastname']; 
    echo $row['address']; 
    echo $row['age']; 
} 
+0

嗯,我這樣做,但在成功和失敗它返回成功。 – Illep

+0

接下來我會嘗試我們的quodlibetor的代碼,您可能還想查看各種鏈接頁面,並且有很多示例。 –

1

這裏的竅門是要認識到$r將是錯誤的,如果它不能找到任何東西,這意味着退出循環(或者從來沒有開始),如果MySQL不能找到你要找的東西。

你可以這樣做:

$rst= mysql_query("select* from Person 
where personname='Labby'"); 

$return = array(); 
while($r= mysql_fetch_array($rst)){ 
    $return[] = $r; 
} 

if (count($return) > 0) { 
    echo json_encode($return); 
} 
else { 
    echo '{"success": false}' 
} 

顯然你要「真」與「假」的返回值調整的東西,是有道理的,你的應用程序

+0

我得到這個錯誤'調用未定義的函數array_length()' – Illep

+0

正確,這是因爲'array_length'不存在。我打算說'count';固定。 – quodlibetor

1

在處理提取之前,您應該先測試$rst是否爲NULL。

if($rst) 
    while($r = mysql_fetch_array) 

MYSQL_QUERY文檔:

返回值

對於SELECT,SHOW,描述,解釋等語句返回的結果集,請求mysql_query()成功返回的資源,或者在錯誤FALSE。

對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。

返回的結果資源應該傳遞給mysql_fetch_array()和其他用於處理結果表的函數來訪問返回的數據。

使用mysql_num_rows()來查找SELECT語句或mysql_affected_rows()返回的行數,以找出有多少行受到DELETE,INSERT,REPLACE或UPDATE語句的影響。

如果用戶沒有訪問查詢引用的表的權限,mysql_query()也會失敗並返回FALSE。

相關問題