2013-10-08 100 views
-1

我想從我的用戶表中收到一個Id。 我:MySql語句返回不正確的結果

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'"; 
$user_id = intval(mysql_query($retrieve_id)); 

語句應該返回1,因爲這是在表中的值。但是,它返回6,這是列名的長度(userid)。當我查詢其他表時,也會發生這種情況。

如何從表格中檢索值?

+0

'var_dump'您的變量。他們不包含你認爲他們包含的內容。 – andrewsi

+0

$ user_id = intval(mysql_fetch_array(mysql_query($ retrieve_id)); –

回答

3

您需要查詢的實際結果,使用mysql_resultmysql_fetch_*

$result = mysql_query("SELECT userid FROM tb_users WHERE username = '$username'"); 

if (!$result) { 
    die('Could not query:' . mysql_error()); 
} 

$user_id = mysql_result($result, 0); // outputs first row 

注意所有mysql_功能已被取消,你應該使用mysqli_PDO。您的查詢也開放給SQL注入。

+0

我正在使用mysql_real_escape_string。這應該保護它嗎? – user2742663

+0

@ user2742663請參閱[**紅框**](http:// j。 mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http:///php.net/mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit

1

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

的mysql_query返回資源不是值。

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'"; 
$result = mysql_fetch_assoc(mysql_query($retrieve_id)); 
$user = $result['userid']; 
0

A)mysql_ *已被棄用 B)確保你參數化的輸入 C)試試這個:

$result = mysql_query($retrieve_id); 

$user_id=$result["userid"]; 
0

功能的mysql_query一個選擇查詢返回的資源類型。對於結果你必須使用mysql_fetch_array或mysql_fetch_assoc函數。

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'"; 
$result = mysql_query($retrieve_id)); 
$row = mysql_fetch_assoc($result)) { 
echo $row['userid']; 
0

檢查mysql_query()上的php文檔。它實際上返回一個resource,而不僅僅是您正在查詢的值。

但是您甚至不應該使用mysql_query(),因爲它在PHP 5.5中不推薦使用,並且您不想在升級時重做代碼,對嗎?

而是使用mysqli_query(),它將返回mysqli_result對象。然後從這個對象中,您可以檢索您正在查找的值fetch_field()