2012-02-22 52 views
0

我正在尋找基於數據庫結果標籤的字符串。我有以下代碼:從mysql_query()得到不合適的php字符串結果

$loc1 = "A"; 
$query = "SELECT loc FROM User where nick='".$users[$j]."'"; 
    $loc = mysql_query($query); 
    if($loc == 1) 
     $loc1 = "A"; 
    if($loc== 2) 
     $loc1 = "B"; 

的LOC1的位置始終是 「A」。我已經確認查詢在MySQL中有效,我很難理解爲什麼這個簡單的例子不起作用。我會感謝您的幫助!

+2

'$ loc'是MySQL的資源,而不是MySQL數據 – Poonam 2012-02-22 13:18:00

+0

退房使用例子在[請求mysql_query()文檔(http://php.net/manual/en/function.mysql- query.php)。 – 2012-02-22 14:00:03

回答

4

函數mysql_query不會返回所提取列的值,而是返回一個MySQL資源,用於提取查詢返回的列值。

變化:

$loc = mysql_query($query); 

到:

$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
if ($row = mysql_fetch_assoc($result)) { 
    $loc = $row["loc"]; 
} 
2

你存儲$ LOC這是一種資源的mysql_query()的返回值。

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

所以,$ LOC不是1或既不等於2

您需要使用mysql_fetch_array/mysql_fetch_object等操作資源。

1

你必須和mysql_fetch_row mysql_fetch_row

例子#1讀取一行獲取與記錄,例如在()

<?php 
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'"); 
if (!$result) { 
    echo 'Could not run query: ' . mysql_error(); 
    exit; 
} 
$row = mysql_fetch_row($result); 

echo $row[0]; // 42 
echo $row[1]; // the email value 
?> 

但是,要小心使用SQL注入攻擊!

http://es.php.net/manual/en/security.database.sql-injection.php

+0

感謝您的警告+1! – 2012-02-22 14:43:10