2013-09-11 92 views
0

我正在運行一個查詢,我只需要獲取1個值。我目前有,將1個查詢值賦給變量

$sql = "SELECT userId FROM UserAccountInfo WHERE loginName = '$userName'"; 
$result = $con->query($sql); 
$row = $result->fetch_array(MYSQLI_NUM); 
$userId = $row[0]; 

我需要一個更短的方式來獲取userId變量。有一種方法,我不必使用fetch_array的東西。我知道查詢中只有一個東西,所以爲什麼要使用數組。

+1

你的問題是什麼? – peterm

+0

@p他想要更短的路! – undone

+0

這個問題是離題,直到你可以解釋*爲什麼*你*需要*做到這一點 – Phil

回答

3

抱歉,讓有關代碼的長度,但不是插值的查詢字符串,並留下你的代碼,SQL注入攻擊敞開你應該使用prepared statements

話雖這麼說,這部分代碼可能看起來像

$sql = "SELECT userId FROM UserAccountInfo WHERE loginName = ?"; 
if ($stmt = $mysqli->prepare($sql)) { 
    $stmt->bind_param('i', $userName); 
    $stmt->execute(); 
    $stmt->bind_result($userId); 
    $stmt->fetch(); 
    $stmt->close(); 
} 

現在,如果你做了很多事情(從你的數據庫中獲取標量值),並且不想重複遍歷代碼,那麼編寫一個包裝函數或者選擇退出其中一個ORM框架。

0

在查詢結尾添加LIMIT子句。

WHERE loginName = '$userName' LIMIT 0,1" 
       -------------^^^^^^^^^^- 
+0

我在接受我的任務時遇到問題,所以我編輯帖子以添加我需要的內容,請再次提供幫助。 –

-1

使用限制的SQL和使用PHP

$result = $con->query($sql); 
$row = mysql_fetch_assoc($result); 
$userId = $row['userId'];