创建查询数据库的功能

时间:2011-12-10 07:57:49

标签: php mysql database function

我正在编写一个脚本来访问有关用户的特定细节,我希望使数据库查询成为函数。

function connectUser($ip) {
   $q = "SELECT * FROM users where ID='$ID'";
   $s = mysql_query($q);
   $r = mysql_fetch_array($s);
}

但是当我尝试使用它时,它将不会按照我想要的方式访问该行。

$user = '999';
connectUser($user)
echo $r['name'];

但如果我把echo $ r ['name'];在功能中它将起作用。

4 个答案:

答案 0 :(得分:1)

你的功能没有返回任何东西。在函数末尾添加return $r['name']
然后echo connectUser($user);

答案 1 :(得分:1)

是你代码中的两个主要问题

  1. 该函数不会返回任何内容,也不会将其结果赋给变量。
  2. 您的变量不匹配。与$ip
  3. 似乎不是$ID变量

    所以,这个会起作用

    function connectUser($id) { 
       $q = "SELECT * FROM users where ID=".intval($id); 
       $s = mysql_query($q); 
       return mysql_fetch_array($s); 
    } 
    
    $user = '999'; 
    $r = connectUser($user) 
    echo $r['name']; 
    

答案 2 :(得分:0)

那是因为函数没有返回变量$r,因此它永远不会被设置在函数之外。这是你应该拥有的:

function connectUser($ip) {
   $q = "SELECT * FROM users where ID='$ip'";
   $s = mysql_query($q);
   return mysql_fetch_array($s);
}

然后外面有:

$user = '999';
$r = connectUser($user)
echo $r['name'];

您可能还想看一下这个问题:prepared statements - are they necessary

答案 3 :(得分:0)

此功能无效,
因为你没有将数据库连接提供给函数,所以 并且你没有返回任何东西(PHP will return NULL

请先了解variable scope是什么,
function

一个可行的例子,可以是: -

function connectUser($db, $ip) 
{
  $q = "SELECT * FROM users where ID='$ID'"; // vulnerable for sql injection
  $s = mysql_query($q, $db);                 // should have error checking
  return mysql_fetch_array($s);              // value to be returned
}

使用方法: -

$db = mysql_connect(...);
$res = connectUser($db, "some value");