2013-09-11 93 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'];